Ale*_*lex 13 opengl viewport viewing
我有一个以世界坐标定义的对象,比如一个以(2,3)为中心的半径为4的圆.如果我希望圆不被扭曲,在视口中完全可见并且在视口内尽可能大,我如何根据前面提到的规格制定一个gluOrtho2D命令来创建一个世界窗口:
glViewport(20, 30, 1000, 500)?
Run Code Online (Sandbox Code Playgroud)
我对整个视口与世界vs屏幕等坐标感到困惑.有人可以带我走过吗?我真的想要了解这一点.
Tar*_*don 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);
Run Code Online (Sandbox Code Playgroud)
那是:
glOrtho2D (-6, 10, -1, 7);
Run Code Online (Sandbox Code Playgroud)
这有效地将-6的X坐标映射到视口的左边缘.然后glViewport映射将其映射到屏幕上的实际位置.随着屏幕尺寸的变化,您必须调整glOrtho2D坐标以补偿纵横比,但只要视口为2:1,这些glOrtho2D调用就不需要更改.