上图是裁剪空间到NDC(归一化设备坐标)的过程.即齐次除法.(是xyz除以w)范围在[-1,1]之间了,但是DirectX还要把z变成[0,1]的范围.
屏幕映射:将xy坐标从[-1,1]范围转换到屏幕坐标系[0,1]后再和像素一一对应. 一般来说,z分量只是参与了齐次除法,不会参与范围改变和屏幕映射,以clipz/clipw的方式储存在深度缓冲中.
如果屏幕的像素是 (pixelWidth,pixelHeight),clipx表示齐次裁剪空间里面的x坐标,那么:
齐次除法: clipx/clipw (NDC过程)
改变xy范围从[-1,1]到[0,1] : (clipx/clipw+1)/2
映射屏幕成像素:((clipx/clipw+1)/2)*pixel
齐次除法和屏幕映射的过程可以表示成: