正投影中的OpenGL深度缓冲

时间:2014-07-02 12:44:35

标签: opengl depth-buffer

如果我在OpenGL中使用正交投影,但仍然为我的对象设置了不同的z值,它是否仍然可以在深度缓冲区中看到?

我的意思是,在色彩缓冲区中,一切看起来都很平坦,并且距离一定。但无论他们在哪里以不同的色调“着色”?深度缓冲是否“理解”正投影中的深度?

1 个答案:

答案 0 :(得分:2)

深度缓冲区与投影矩阵无关。简单地说,z缓冲区记录给定点处最接近的Z值。在绘制内容时,它会查看当前值。如果新值小于现有值,则接受该值并更新z缓冲区。如果该值大于当前值后面的值,则将其丢弃。深度缓冲区与颜色无关。我认为你可能会混淆深度测试。

例如,假设您有两个四边形A&乙

A.z = - 1.0f;

B.z = - 2.0f;

如果你假设两个四边形都具有相同的尺寸,超出它们的Z值,那么你可以看到绘制两者都是一种浪费。由于四边形A位于四边形B的前面,因此绘制四边形B是浪费。深度缓冲区的作用是检查zcords。在此示例中,如果您已启用深度测试&深度缓冲四边形B永远不会被绘制,因为深度测试会显示它被四边形A遮挡。

相关问题