透视投影
在透视投影中,视锥体(观察空间)中的一个3D坐标点会被映射到一个立方体中(NDC);其中 xxx 坐标范围会从 [l,r][l, r][l,r] 映射到 [−1,1][-1, 1][−1,1]...在 OpenGL 中,观察空间中3D坐标点是投影到近裁剪面(即投影面)上的.下面的示意图展示了一个在观察空间中的坐标点 (xe,ye,ze)(x_e, y_e, z_e)(xe,ye,ze),是如何投影到近裁剪面坐标点...现在,我们只需要求解出 GL_PROJECTION 矩阵的第三行便可以了,不过计算 znz_nzn 和之前计算的 xnx_nxn 和 yny_nyn 有些不同,因为观察空间中的 zez_eze...总是会被投影到近裁剪面上(数值为−n-n−n),而我们需要的是唯一的 zzz 值以进行裁剪和深度检测,另外的,我们也应该能够"反投影"(unproject,投影的逆变换)znz_nzn.由于我们知道...所有观察空间的 xex_exe, yey_eye 和 zez_eze 分量都被线性的映射到 NDC 中,我们要做的就是将长方体(观察空间)缩放成一个立方体(NDC),然后将其移动到原点位置.我们马上来算一下