Zeb*_*ish 0 opengl graphics projection matrix
下图显示了在OpenGL中计算透视投影矩阵时使用的主要值.它们被标记为"HALFFOV","RIGHT","LEFT","NEAR"和"NEAR x 2":
现在,正如您将在下面的图片中看到的那样,在投影之后计算出x值,据说它是2 x NEAR除以RIGHT - LEFT.事实上,2 x NEAR除以RIGHT - LEFT与简单地做NEAR/RIGHT相同.在这两种情况下,你只是加倍,加倍NEAR,加倍右,所以分数是相同的.
此外,在第3列中存在应该存在零的操作,例如:RIGHT + LEFT除以RIGHT - LEFT总是最终为0/RIGHT - LEFT,其始终为零.
当GLM数学库为我制作透视投影矩阵时,那些始终为零的两个总是为零.
为什么矩阵是这样写的?在某些情况下我的假设是错误的吗?
为什么矩阵是这样写的?
因为对称的,以视图为中心的投影只是众多可能性中的一种.有时您想要倾斜和/或移动平面以获得特定效果或渲染技术.
在某些情况下我的假设是错误的吗?
例如,平面平行移动视图平截头体是平铺渲染所必需的(不要与平铺光栅化器混淆),其中要渲染的图像被分割成平铺网格,每个平铺单独渲染然后稍后合并.如果所需的输出图像分辨率超过所使用的OpenGL实现的最大视口/渲染缓冲区大小限制,则需要这样做.
其他情况是如果你想模拟倾斜移位摄影.
最后但并非最不重要的是,对于使用3D眼镜观看的固定位置屏幕显示设备的立体渲染,需要移位投影矩阵.
(头戴式显示器的渲染需要稍微不同的投影设置).