我想混合透视和正交视图,但我无法让它发挥作用。
我希望X和Y坐标是正交和Z透视。为了澄清,我添加了从OpenGL坐标到屏幕显示的所需转换的草图:
(我从tutorial开始,但找不到如何获取值top,bottom等。)
答案 0 :(得分:1)
你所画的只是透视,而不是混合。您只需要确保观察方向与z轴平行,以使盒子的正面和背面保持矩形。
答案 1 :(得分:0)
您可以使用glFrustum
来实现此目标。
如果您使用标准透视矩阵并且相机正面朝向正面,则X / Y将是均匀的,但是远离相机的移动会将X / Y坐标移向中心,缩小它们以获得标准视差效果。你所画的是朝向窗户顶部的移动。您需要做的就是将透视投影裁剪到标准中心下方。这就是glFrustum
进来的地方 - 向下移动正常对称的顶部/底部参数,沿着你想要的轴对齐摄像机/视图矩阵,你应该有所需的投影。
相机/视图的任何旋转都会破坏X / Y平面中的均匀投影。对于相机移动,您只能平移并移动glFrustum
边界。
编辑想想看,你可能只需要在调用glTranslatef(shearX, shearY, 0)
之前投入gluPerspective
并实现相同的目标。