Meg*_*raj 11 opengl opengl-3 opengl-es-2.0
我知道透视划分是通过将x,y和z除以w来完成的,以获得标准化的设备坐标.但我无法理解这样做的目的.此外,它与剪辑有什么关系吗?
a.l*_*ram 12
一些细节补充了一般答案:
想法是在屏幕上投影点(x,y,z)以具有(xs,ys,d).下图显示了y坐标.

我们从学校知道
tan(alpha)= ys/d = y/z
这意味着投影计算为
ys = d*y/z = y/w
w = z/d
这足以应用投影.但是在OpenGL中,您希望(xs,ys,zs)是[-1,1]中的规范化设备坐标,是的,这与剪切有关.
(xs,ys,zs)的极值表示单位立方体,其外部的所有内容都将被剪裁.因此,投影矩阵通常考虑剪切限制(Frustum)以进行单个变换,利用透视分割,同时应用投影并将投影坐标与z一起变换为标准化设备坐标.
我的意思是为什么我们需要那个?
用外行术语来说:使透视变形起作用。在透视投影矩阵中,Z坐标“混合”到W输出分量中。因此,Z坐标的值越小,即离原点越近,则缩放的对象越多,即在屏幕上越大。