0

我还是 OpenGL ES 2.0 的新手,并且已经很好地理解了转换矩阵操作。虽然我在绘制图元时对 z 顺序的相关性有点不清楚。例如,当我使用透视投影矩阵并用它变换四边形的顶点时,它确实会将四边形画得更小(这样它会显得更远)。但是,当我首先以较大的 z 顺序绘制一个四边形,然后以较小的 z 顺序绘制另一个四边形时,第二个四边形仍然出现在第一个四边形的前面。这是 ES 2.0 的预期还是我需要启用其他东西?是否有必要按 z 顺序对四边形进行排序,还是通过启用设置来解决这个问题?

例如,在 (0, 0.5, 0) 处绘制第一个四边形,在 (0, 0.5, -2.0) 处绘制第二个四边形。由于透视变换,第二个看起来更小,但在第一个前面。两个四边形具有相同的顶点。或许我还应该提到,在绘制这些四边形时,我不是在一次调用 glDrawElements() 中执行此操作,而是在循环中调用 glDrawElements(),例如绘制列表的每个模型。

4

1 回答 1

1

除非你基本上是在做一个 2D 应用程序,否则你不想手动排序你的图元,你会想要使用depth bufferz-buffer)。有关该主题的 OpenGL ES 1.1 教程在这里,这些东西在 ES 2.0 中没有任何不同。

确保在谷歌上获取一些帮助,以获得特定平台上的深度缓冲区设置,iOS/Android/GLUT/等中的颜色/深度缓冲区设置不同。

于 2013-03-14T19:43:18.727 回答