我有一个问题,我的 opengl 无法在 HTC 设备上正确呈现。
我已经在其他一些可以正确渲染的设备上对其进行了测试。是普通设备上的示例: 这是普通设备上的示例。这是 HTC Desire 和 Desire S 的示例。
我添加时的问题
GLES20.glEnable(GLES20.GL_DEPTH_TEST);
当我将其注释掉时会再次出现,但我不能只是将它排除在外,因为我的一半墙壁变得不可见。
有没有可能与此有关?有什么我可以做的吗?我可以提供更多代码。
很可能你忘记了明确指定一些东西。设备之间的默认值不同,在一个 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