gluOrtho2D和glViewport

时间:2010-01-20 05:20:00

标签: opengl viewport viewing

我有一个以世界坐标定义的对象,比如一个以(2,3)为中心的半径为4的圆。如果我希望圆不被扭曲,在视口中完全可见并且尽可能大在视口中,如何根据前面提到的规格制定gluOrtho2D命令来创建世界窗口:

glViewport(20, 30, 1000, 500)?

我对整个视口与世界vs屏幕等坐标感到困惑。有人可以带我走过吗?我真的想要了解这一点。

1 个答案:

答案 0 :(得分:27)

在您的示例中,视口为1000像素,高500像素。因此,您需要指定具有相同宽高比(2:1)的glOrtho坐标。

您的圆的半径为4个单位,因此您需要一个8个单位高,8个单位宽的视图。考虑到2:1的宽高比,让我们将16个单位宽,8个单位高。

中心位于(2,3)。因此,将这些16 x 8集中在您应该得到的位置:

glOrtho2D (2 - 8, 2 + 8, 3 - 4, 3 + 4);

那是:

glOrtho2D (-6, 10, -1, 7);

这有效地将-6的X坐标映射到视口的左边缘。然后glViewport映射将其映射到屏幕上的实际位置。随着屏幕尺寸的变化,您必须调整glOrtho2D坐标以补偿纵横比,但只要视口为2:1,这些glOrtho2D调用就不需要更改。