如何轻松确定多个glDraw调用中对象的z顺序?

我有一个简单的基于2D瓦片的场景,我使用OpenGL进行渲染。 在每一帧我首先绘制静态背景,然后绘制dynamic元素(怪物等)。 通过这种方式,后面的绘制元素似乎“画出”了前面绘制的元素(使用单独的glDraw调用)。

但是,当问到周围时,如果我使用深度缓冲区,绘制事物的顺序似乎并不重要,因为深度缓冲区可用于确定可见性。

但是当使用深度缓冲区时,有些东西共享相同的z值会发生什么? 更新的那个是“画了”一个更旧的吗?

如果是这样,我应该依靠这种行为,或者为我的“图层”使用不同的z值?

当两个对象共享同一个坐标系并且彼此相互绘制时,会得到一个叫做z的效果(我曾经听说过它叫zchne),每个模型的一部分可见,但是它们会产生一个奇怪的纹理。

这最终发生的更接近于眼睛,因为深度缓冲区比远处的部分保持更长的比特范围。

你可以通过在顶点着色器中根据它们的y坐标赋予每个实体一个轻微的偏移量来使这个效果消失。