深度测试HTC设备上的绘图问题

时间:2013-10-24 13:42:11

标签: java android rendering opengl-es-2.0 depth-buffer

我遇到的问题是我的opengl无法在HTC设备上正常呈现。

我已在其正确呈现的其他几个设备上测试过它。 是普通设备上的一个示例: Here是普通设备上的示例。 here是HTC Desire和Desire S的一个例子。

我添加

时的问题
  

GLES20.glEnable(GLES20.GL_DEPTH_TEST);

当我发表评论时再次出现,但我不能把它留下来,因为我的墙壁有一半看不见了。

它是否可能与this?有关?我能做些什么吗?我可以提供更多代码。

1 个答案:

答案 0 :(得分:1)

很可能你忘了明确指出一些东西。设备之间的默认值不同,在一个GPU上运行的代码将在另一个GPU上失败。请确保您已设置所有这些:

GLES20.glEnable(GLES20.GL_DEPTH_TEST); // enable depth test
GLES20.glDepthMask(true); // write to z-buffer
GLES20.glDepthFunc(GLES20.GL_LEQUAL); // specify the way depth test works

绘制几何图形时,请始终清除颜色和深度缓冲区:

GLES20.glClear(GLES20.GL_COLOR_BUFFER_BIT | GLES20.GL_DEPTH_BUFFER_BIT); // clear both color and z-buffer

最后,确保您已正确初始化OpenGL上下文,并且对已使用的EGL配置确实有深度缓冲区(EGL_DEPTH_SIZE不为0)。您可以在此处找到Desire S的所有可用EGL配置列表:http://gfxbench.com/device.jsp?benchmark=gfx27&D=HTC+Desire+S&testgroup=egl