java - 在 HTC 设备上深度测试绘图问题

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

我有一个问题,我的 opengl 无法在 HTC 设备上正确呈现。

我已经在它能正确呈现的其他一些设备上对其进行了测试。 是普通设备上的示例: Here是普通设备上的示例。和 here以 HTC Desire 和 Desire S 为例。

添加时的问题

GLES20.glEnable(GLES20.GL_DEPTH_TEST);

当我将其注释掉时又出现了,但我不能将其遗漏,因为那样我的一半墙就看不见了。

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

最佳答案

很可能您忘记了明确指定一些内容。默认值因设备而异,在一个 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

关于java - 在 HTC 设备上深度测试绘图问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19567698/

相关文章:

android - 获取 TextView 的文本和边界之间的空间

android - 查看 "Force GPU-Rendering"是否启用

java - 使用通配符和类型化泛型会生成 "is not applicable for the arguments"错误

java - 为什么当我尝试 .relativize() 一个 Path 而不是另一个 Path 时会得到 ProviderMismatchException?

java - 使用 Eclipse 插件中的行号突出显示 jdt java 文本编辑器中的文本

c# - 使用 Websocket 将音频流从 Android(客户端)发送到 C#(服务器)

java - Liquibase SQL Server 脚本在 H2 数据库测试中失败

android ScrollView 最小化我的项目高度

directx - 多个渲染目标不保存数据

angularjs - Freemarker 与 AngularJS