OpenGL:混合正交投影和透视投影

时间:2013-11-13 15:21:48

标签: opengl projection-matrix

我想混合透视和正交视图,但我无法让它发挥作用。

我希望X和Y坐标是正交和Z透视。为了澄清,我添加了从OpenGL坐标到屏幕显示的所需转换的草图:

sketch of desired view

(我从tutorial开始,但找不到如何获取值top,bottom等。)

2 个答案:

答案 0 :(得分:1)

你所画的只是透视,而不是混合。您只需要确保观察方向与z轴平行,以使盒子的正面和背面保持矩形。

答案 1 :(得分:0)

您可以使用glFrustum来实现此目标。

如果您使用标准透视矩阵并且相机正面朝向正面,则X / Y将是均匀的,但是远离相机的移动会将X / Y坐标移向中心,缩小它们以获得标准视差效果。你所画的是朝向窗户顶部的移动。您需要做的就是将透视投影裁剪到标准中心下方。这就是glFrustum进来的地方 - 向下移动正常对称的顶部/底部参数,沿着你想要的轴对齐摄像机/视图矩阵,你应该有所需的投影。

相机/视图的任何旋转都会破坏X / Y平面中的均匀投影。对于相机移动,您只能平移并移动glFrustum边界。

编辑想想看,你可能只需要在调用glTranslatef(shearX, shearY, 0)之前投入gluPerspective并实现相同的目标。