【发布时间】:2014-07-02 12:44:34
【问题描述】:
如果我在 OpenGL 中使用正交投影,但仍然为我的对象设置不同的 z 值,它在深度缓冲区中是否仍然可见?
我的意思是,在颜色缓冲区中,一切看起来都很简单,而且距离很远。但是在哪里他们会以不同的色调“着色”?深度缓冲区是否“理解”正交投影中的深度?
【问题讨论】:
标签: opengl depth-buffer
如果我在 OpenGL 中使用正交投影,但仍然为我的对象设置不同的 z 值,它在深度缓冲区中是否仍然可见?
我的意思是,在颜色缓冲区中,一切看起来都很简单,而且距离很远。但是在哪里他们会以不同的色调“着色”?深度缓冲区是否“理解”正交投影中的深度?
【问题讨论】:
标签: opengl depth-buffer
深度缓冲区与投影矩阵无关。简而言之,z 缓冲区会记录给定点最接近的 Z 值。随着事物的绘制,它会查看当前值。如果新值小于现有值,则接受它并更新 z 缓冲区。如果该值大于当前值之后的值,则将其丢弃。深度缓冲区与颜色无关。我认为您可能会将混合与深度测试混淆。
例如,假设您有两个四边形 A 和 B。
A.z = - 1.0f;
B.z = - 2.0f;
如果您假设两个四边形在 Z 值之外具有相同的尺寸,那么您可以看到绘制两者是多么浪费。由于四边形 A 在四边形 B 的前面,因此绘制四边形 B 是一种浪费。深度缓冲区所做的是检查 zcords。在此示例中,如果您启用了深度测试并且深度缓冲区四边形 B 将永远不会被绘制,因为深度测试会显示它被四边形 A 遮挡。
【讨论】: