java - OpenGL- android 中 glClipPlanef 的问题

标签 java android opengl-es clip

我正在尝试在 3 个平面 XY、YZ 和 ZX 中裁剪 3D 模型。当我使用 GL11.GL_CLIP_PLANE0 时,它正在工作,但 GL11.GL_CLIP_PLANE1 和 GL11.GL_CLIP_PLANE2 不工作。我正在使用的 java 代码粘贴在下面。它适用于 Android 2.2 版,但不适用于 2.2 以上的版本。如果有人知道原因,请发布。

enableSectionPlane(GL10 gl)
{
    GL11 gl11 = (GL11) gl;

    if( is_XY_plane)
    {

        float eqn1[] =  { 0.0f, 0.0f, 1.0f,0.0f };
        gl.glEnable( GL11.GL_CLIP_PLANE0);
        gl11.glClipPlanef( GL11.GL_CLIP_PLANE0, eqn1,0 );

    }
    else
    {
        gl.glDisable( GL11.GL_CLIP_PLANE0 );
    }


    if( is_YZ_plane)
    {
        float eqn2[] = { 1.0f, 0.0f, 0.0f,0.0f };           
        gl.glEnable( GL11.GL_CLIP_PLANE1);
        gl11.glClipPlanef( GL11.GL_CLIP_PLANE1, eqn2,0);
    }
    else
    {
        gl.glDisable( GL11.GL_CLIP_PLANE1 );
    }

    if(is_ZX_plane)
    {
        float eqn3[] = { 0.0f, 1.0f, 0.0f,0.0f };
        gl.glEnable( GL11.GL_CLIP_PLANE2 );
        gl11.glClipPlanef( GL11.GL_CLIP_PLANE2, eqn3,0 );
    }
    else
    {
        gl.glDisable( GL11.GL_CLIP_PLANE2 );
    }


}

最佳答案

使用 glGet()GL_MAX_CLIP_PLANES 仔细检查您的 GL 实现是否支持多个裁剪平面。 glGet() docs说它应该至少支持 6。

关于java - OpenGL- android 中 glClipPlanef 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8410409/

相关文章:

ios - 为什么基于OpenGL的iOS应用程序将在审查过程中被拒绝?

java - 使用 Hibernate 困惑进行搜索

java - 将小数转换为各种数据类型时文本字段出现错误

java - Lambda 表达式将对象从一个列表添加到另一种类型的列表

android - AndEngine渲染纹理异常: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT

c++ - OpenGL ES - 纹理球体

java - 如何使用服务帐号正确获取用户的日历事件?

android - 获得粗略用户移动速度的最佳方法

java - 从 ListView 获取子项会导致 android.view.View android.view.View.findViewById(int) 出现空对象引用

Android 源代码、自定义控件、开源库