使用glDrawTexfOES渲染具有前景对象的背景图像的问题

时间:2010-08-08 07:45:18

标签: iphone opengl-es textures depth-buffer

我有一个简单的iPhone OpenGL ES应用程序,我使用纹理渲染全屏背景图像,然后使用线条在其上绘制3D多面体。使用glDrawTexfOES显示纹理。

问题是我似乎无法在背景上显示多面体。在glDrawTexfOES调用中,如果我使用小于1的z值,则背景图像显示但没有多面体。如果z值为1(或更大),则多面体显示但不显示背景图像。

未启用混合。深度测试正在进行中。附加深度缓冲区。只绘制多面体时,深度测试似乎有效。多面体用简单的线条绘制。

z值行为表明多面体的深度缓冲值可能为1 ......?

有关如何显示背景图像和前景对象的任何线索?

1 个答案:

答案 0 :(得分:0)

我的猜测是,当您绘制背景图像时,禁用深度蒙版。这样可以确保在放置背景时不会触及深度缓冲区,以便绘制多面体并且不会使深度测试失败。

进行简单测试并缩小背景,然后放大多面体并使用原始算法进行渲染。您应该在任何背景都没有的地方看到几何图形,以及多面体实际通过深度测试的任何地方。