【问题标题】:Android OpenGL ES render compex object incorrectlyAndroid OpenGL ES 渲染 compex 对象不正确
【发布时间】:2012-12-03 17:22:15
【问题描述】:

我正在尝试编写绘制复杂非凸对象的程序。但我有问题 - 有些面孔似乎是透明的。我通过添加部分解决了这个问题 GLES20.glEnable(GLES20.GL_CULL_FACE);

但是在那之后我发现如果有两个面的法线方向相同并且一个放在另一个后面,它就不起作用了。在这种情况下,Open GL 渲染不正确。 我也尝试添加 GLES20.glEnable(GLES20.GL_DEPTH_TEST)

但我没有达到目标。而且,一半的物体消失了。你能解释一下,我哪里错了吗?

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

【问题讨论】:

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

标签: android opengl-es culling


【解决方案1】:

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

解决方案:将以下行添加到 eglChooseConfig 属性列表中。 EGL10.EGL_DEPTH_SIZE, 8, EGL10.EGL_STENCIL_SIZE,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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多