【问题标题】:Depth testing drawing issue on HTC devicesHTC 设备上的深度测试绘图问题
【发布时间】:2013-10-24 13:42:11
【问题描述】:

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

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

我添加时的问题

GLES20.glEnable(GLES20.GL_DEPTH_TEST);

当我将其注释掉时会再次出现,但我不能只是将其忽略,因为这样我的一半墙就会变得不可见。

有没有可能和this?有关,有什么我可以做的吗?我可以提供更多代码。

【问题讨论】:

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


    【解决方案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

    【讨论】:

    • 非常感谢,我假设您只需要启用深度测试,并且在所有设备上都是相同的。我真的很愚蠢。
    猜你喜欢
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2011-10-18
    • 2016-02-20
    • 1970-01-01
    相关资源
    最近更新 更多