6

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

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

所需视图的草图

(我从教程开始,但找不到如何获取顶部、底部等值)

4

2 回答 2

1

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

于 2013-11-14T18:38:45.497 回答
0

您可能可以使用glFrustum来实现这一点。

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

相机/视图的任何旋转都会破坏 X/Y 平面上的均匀投影。对于相机移动,您将仅限于平移和移动glFrustum边界。

编辑想一想,您可能只需在glTranslatef(shearX, shearY, 0)调用之前加入agluPerspective并实现相同的目标。

于 2013-11-13T17:58:29.507 回答