我正在读一本 OpenGL 书,其中指出了两个看似矛盾的陈述:
- 相机位于原点并俯视负 z 轴。
- 深度缓冲区清除为默认值 1.0,Z 值较低的像素通过可见性测试显示在屏幕上。
虽然我理解深度缓冲区的概念,但我不明白如何将小于另一个的 Z 确定为“位于”更高 Z 值的“前面”以用于传递深度缓冲测试。
我希望较高的 Z 值位于“前面”,从而赢得深度缓冲区比较。我在这里缺少什么?
最佳答案
Z 缓冲区中的值在 [0.0,1.0]
范围内,而 1.0
是视锥体中实际包含的更远距离(超出的任何值都不是)可见)。
这意味着在绘制形状的像素时,如果其 Z 值低于当前值,则它比那里的像素(没有任何像素或只是另一个像素)更靠近眼睛,因此 Z 会更新并且像素画了。否则像素将被丢弃。
关于graphics - 深度缓冲区和 Z 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15181309/