我正在尝试在 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/