我正在阅读一本OpenGl书,其中指出了两个看似矛盾的陈述:
虽然我理解深度缓冲的概念,但我不明白为了传递的目的,一个小于另一个的Z如何被确定为更高的 Z值的“前面”深度缓冲测试。
我希望更高的Z值“在前面”,从而赢得深度缓冲比较。我在这里缺少什么?
答案 0 :(得分:1)
Z缓冲区中的值在[0.0,1.0]
范围内,而1.0
是实际包含在平截头体中的距离越远(超出的范围不可见)。
这意味着当绘制一个形状的像素时,如果它的Z值低于当前的那个,它比那里的东西(没有或只是另一个像素)更接近眼睛,所以Z更新并且像素绘制。否则,像素将被丢弃。
答案 1 :(得分:1)
在模型 - 视图转换之后,所有点都在"视图坐标"相机位于原点,俯视-z轴。然后这些点通过投影变换,然后进入"剪辑坐标"这里z值映射到范围[-1,+ 1]。 近平面上的点最终将为z值-1并指向 远平面平面,最终的z值为+1。
所有预测都是如此。管道要求剪切和透视分割后所有坐标值都在[-1,+ 1]范围内 - 这里的点在规范化设备坐标中。