OpenGL 中的深度缓冲区是精确的 Z 值还是 X^2+Y^2+Z^2?

Is the Depth buffer in OpenGL the exact Z-values or X^2+Y^2+Z^2?

OpenGL中的depth-buffer内容与什么有关? 它们是 Z 值还是眼睛的实际深度值(即 sqrt(X2+Y2+Z2))?

OpenGL 中的深度缓冲区存储每个像素的 window-space z 值。

Window-space 深度与眼睛-space 深度非常不同。要从 eye-space 到 window-space,您必须应用投影、透视划分和视口变换。

最后一个细节可能是最重要的。经过投影和透视分割后,你的视域可见深度范围为[-1.01.0]。 default 深度范围将这些坐标偏置并缩放到 [0.01.0] 范围内,即深度缓冲区存储什么。


您描述为 “实际深度值” 的是 3D 中的欧氏距离 space。这通常不是人们在谈论深度时所讨论的内容。深度是沿 Z 轴的距离度量。