1

我试图在android上用opengl es渲染rubix立方体。我是这样做的:我渲染 27 个相邻的立方体。并且被覆盖的立方体的面用黑色bmp图片纹理化,其他可以看到的面用彩色图片纹理化。我使用剔除面和深度测试来避免渲染无用的面。但看看我得到了什么,这很奇怪。黑脸有时会出现。谁能告诉我如何摆脱文物?

截图:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

4

1 回答 1

2

借助屏幕截图,看起来深度缓冲根本没有任何效果 - 可以安全地得出结论,您首先渲染立方体的侧面是蓝色的面,然后是它后面的中央部分,然后是背面?

我对 Android 的东西有点不了解,但我认为混乱可能只是在 OpenGL 中启用深度测试是不够的。您还必须确保分配了深度缓冲区。

可能您调用setEGLConfigChooser的是禁用深度缓冲区。该方法有一堆重载变体,但单个布尔版本和允许指定 redSize、greenSize 等的版本让您可以显式控制是否存在深度缓冲区大小。所以你会想要检查那些。

如果您要显式创建帧缓冲区,请确保您附加了深度渲染缓冲区。

于 2013-09-06T05:33:53.090 回答