概览(Overview)
电脑显示屏是一个2D平面,为了能够在这个2D平面上显示OpenGL渲染的3D场景,我们必须将3D场景当作2D图像投影到这个2D平面(计算机屏幕)上.GL_PROJECTION...矩阵就是用来做这种投影变换的.首先,该矩阵将所有观察空间的顶点坐标变换到裁剪空间,接着,将变换后的顶点坐标(即裁剪坐标)的每个分量(x,y,z,w)(x,y,z,w)(x,y,z,w)除以坐标的 www...透视投影
在透视投影中,视锥体(观察空间)中的一个3D坐标点会被映射到一个立方体中(NDC);其中 xxx 坐标范围会从 [l,r][l, r][l,r] 映射到 [−1,1][-1, 1][−1,1]...总是会被投影到近裁剪面上(数值为−n-n−n),而我们需要的是唯一的 zzz 值以进行裁剪和深度检测,另外的,我们也应该能够"反投影"(unproject,投影的逆变换)znz_nzn.由于我们知道...所有观察空间的 xex_exe, yey_eye 和 zez_eze 分量都被线性的映射到 NDC 中,我们要做的就是将长方体(观察空间)缩放成一个立方体(NDC),然后将其移动到原点位置.我们马上来算一下