规范化坐标
2025-02-05
12
0
原文转自:https://jia.je/kb/software/cg.html#normalized-device-coordinates
NDC(Normalized Device Coordinates)是经过一系列变换以后,得到的最终的 3D 坐标。
以 OpenGL 为例,NDC 就是一个在三个坐标轴上都在[-1,1] 之间的立方体,只有在这个立方体中的物体才可能被显示出来。
NDC 的坐标范围在不同的图形 API 下可能不一样,例如 OpenGL 和 WebGL 是从 [-1,-1,-1]到 [1,1,1],而 DirectX-12、Metal、Vulkan 和 WebGPU 是从 [-1,-1,0]到 [1,1,1],也就是 Z 轴上的范围只有[0,1]。
因此 NDC 到屏幕坐标的对应关系是:
x 轴:-1 -> x, 1 -> x + w
y 轴:-1 -> y, 1 -> y + w
z 轴:-1 -> n, 1 -> f
其中 x, y, w 和 h 用 glViewport 函数设置,n 和 f 用 glDepthRange 设置。