OpenGL:混合正交投影和透视投影
我想混合透视和正交视图,但我无法让它工作 我希望X和Y坐标是正交的,Z坐标是透视的。为了澄清,我添加了从OpenGL坐标到屏幕显示所需转换的草图: (我从a开始,但找不到如何获取top、bottom等值)您可能可以使用来实现这一点 如果使用标准透视矩阵,并且相机面向长方体正面,X/Y将是均匀的,但是远离相机的移动将使X/Y坐标向中心移动,从而缩小它们以获得标准视差效果。您所绘制的是向窗口顶部移动。您所需要做的就是将透视投影裁剪到低于其标准中心的位置。这就是OpenGL:混合正交投影和透视投影,opengl,projection-matrix,Opengl,Projection Matrix,我想混合透视和正交视图,但我无法让它工作 我希望X和Y坐标是正交的,Z坐标是透视的。为了澄清,我添加了从OpenGL坐标到屏幕显示所需转换的草图: (我从a开始,但找不到如何获取top、bottom等值)您可能可以使用来实现这一点 如果使用标准透视矩阵,并且相机面向长方体正面,X/Y将是均匀的,但是远离相机的移动将使X/Y坐标向中心移动,从而缩小它们以获得标准视差效果。您所绘制的是向窗口顶部移动。您所需要做的就是将透视投影裁剪到低于其标准中心的位置。这就是glFrustum的作用-向下移动通常
glFrustum
的作用-向下移动通常对称的顶部/底部参数,沿所需的轴对齐摄影机/视图矩阵,您应该具有所需的投影
摄影机/视图的任何旋转都会破坏X/Y平面上的均匀投影。对于相机移动,则仅限于平移和移动glFrustum
边界
想一想,在调用
gluPerspective
之前,您可能只需输入一个glTranslatef(shearX,shearY,0)
,就可以实现同样的效果。您所绘制的只是透视图,而不是混合。您只需确保查看方向与z轴平行,以使长方体的正面和背面保持矩形。您使用的是哪个版本的OpenGL?你已经使用自定义矩阵了吗?你想结合透视矩阵和剪切矩阵,我相信。。。我认为没有建立剪切矩阵的命令。您必须自己构造它。图表上的坐标看起来不正确,6个顶点的x坐标为10。@JWWalker:我修复了坐标,谢谢您的提示。我已经尝试过了,效果很好。一旦我知道了如何缩放场景,使场景在视锥体内最大化,我将把它作为答案发布。