And*_*man 45
剪辑空间实际上距离NDC一步,所有坐标除以Clip.W产生NDC.该范围以外的任何东西[ -1,1 ]中得到的NDC空间对应于一个点,是剪辑体积之外.NDC之前的坐标空间被称为剪辑空间是有原因的;)
然而,严格来说,NDC空间不一定是立方的.确实,NDC空间是OpenGL中的一个多维数据集,但在Direct3D中它不是.在D3D中,NDC空间中的Z坐标范围为0.0到1.0,而GL中的范围从-1.0到1.0.X和Y在GL和D3D中表现相同(即,它们的范围从-1.0到1.0).NDC是标准坐标空间,但它在不同的API中具有不同的表示.
最后,在光栅化期间发生NDC空间到屏幕空间(AKA窗口空间),并由视口和深度范围定义.片段位置在任何其他坐标空间中都没有意义,这就是光栅化产生的:片段.
在OpenGL 4.5中引入,扩展GL_ARB_clip_control允许您在GL中采用D3D的NDC约定.
glClipControl (GL_LOWER_LEFT, GL_NEGATIVE_ONE_TO_ONE);
Run Code Online (Sandbox Code Playgroud)
glClipControl (GL_UPPER_LEFT, GL_ZERO_TO_ONE); // Y-axis is inverted in D3D
Run Code Online (Sandbox Code Playgroud)
use*_*490 11
剪辑空间和NDC(规范化设备坐标)不是一回事,否则它们将没有不同的名称.
剪辑空间是投影矩阵在点变换之后但在归一化之前空间点所处的位置w.
NDC空间是归一化后的空间点w.
Camera space -->
x projection matrix --->
Clip space (before normalisation) --->
Clipping --->
Normalisation by w (x/w, y/w, z/w) --->
NDC space (in the range [-1, 1] in x and y)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30510 次 |
| 最近记录: |