深度信息在不同的阶段其意义是不同的,不同的3D接口对这个深度信息的理解也有区别。本文仅仅讨论位于NDC空间的深度信息,其取值范围通常是[0, 1.0]或者[-1.0, 1.0]。
OpenGL的深度信息
OpenGL默认是GL_NEGATIVE_ONE_TO_ONE,即[-1.0, 1.0]。
通过glClipControl(GL_ZERO_TO_ONE)可以修改为[0, 1.0]。修改后可以和D3D/Vulkan的默认行为类似。
Vulkan的深度信息
Vulkan默认是[0.0, 1.0]。
总结
API | Default | Alternative |
---|---|---|
OpenGL | [-1.0, 1.0] | [0, 1.0] |
Vulkan | [0, 1.0] |
参考文献:
https://stackoverflow.com/questions/21841598/when-does-the-transition-from-clip-space-to-screen-coordinates-happen
https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glClipControl.xhtml