Android OpenGL ES不正确地渲染compex对象

Android OpenGL ES不正确地渲染compex对象,android,opengl-es,culling,Android,Opengl Es,Culling,我正试图写一个程序来画复杂的非凸物体。但我有个问题——有些脸看起来是透明的。我通过添加 GLES20.glEnable(GLES20.Glu-CULL-FACE) 但在那之后,我发现如果有两个法线方向相同的面,一个放在另一个后面,这是行不通的。在这种情况下,Open GL渲染不正确。 我还试图补充 GLES20.glEnable(GLES20.GL\u深度测试) 但我没有达到目的。此外,该物体的一半消失了。请你解释一下,我哪里错了 另外,为了获得对象顶点,我使用了Blender(我将其数据导出到

我正试图写一个程序来画复杂的非凸物体。但我有个问题——有些脸看起来是透明的。我通过添加
GLES20.glEnable(GLES20.Glu-CULL-FACE)

但在那之后,我发现如果有两个法线方向相同的面,一个放在另一个后面,这是行不通的。在这种情况下,Open GL渲染不正确。 我还试图补充
GLES20.glEnable(GLES20.GL\u深度测试)

但我没有达到目的。此外,该物体的一半消失了。请你解释一下,我哪里错了


另外,为了获得对象顶点,我使用了Blender(我将其数据导出到obj文件中)。我还检查了这些数据-顶点顺序正确(CCW)。

我也遇到了同样的问题。问题是您没有在configAttribslist中为深度和模具分配缓冲区大小。因此,即使指定DepthTest,也不会计算深度

解决方案:将以下行添加到EGLChoosConfig属性列表中。 EGL10.EGL_深度_尺寸,8, EGL10.EGL_模具大小,8,这为我解决了这个问题

代码:

private static int[] s_configAttribs2 = { 
   EGL10.EGL_RED_SIZE, 4, 
   EGL10.EGL_GREEN_SIZE, 4, 
   EGL10.EGL_BLUE_SIZE, 4, 
   EGL10.EGL_DEPTH_SIZE, 8, 
   EGL10.EGL_STENCIL_SIZE, 8, 
   EGL10.EGL_SAMPLE_BUFFERS, 1,
   EGL10.EGL_RENDERABLE_TYPE, 
   EGL_OPENGL_ES2_BIT, 
   EGL10.EGL_NONE 

};

egl.eglChooseConfig(display, s_configAttribs2, configs, numConfigs, num_config);

有没有可以上传截图的地方?然后,具有适当权限的人可以将其编辑到您的问题中。