【问题标题】:gluOrtho2D and glViewportgluOrtho2D 和 glViewport
【发布时间】:2010-01-20 05:20:00
【问题描述】:

我有一个在世界坐标中定义的对象,例如一个以 (2,3) 为中心、半径为 4 的圆。如果我希望圆不变形,则在视口中完全可见并尽可能大在视口中,如何根据上述规范制定 gluOrtho2D 命令来创建世界窗口:

glViewport(20, 30, 1000, 500)?

我对整个视口、世界、屏幕等坐标感到困惑。有人可以带我过去吗?我真的很想掌握这个。

【问题讨论】:

    标签: opengl viewport


    【解决方案1】:

    在您的示例中,视口的宽度为 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 调用就不需要更改。

    【讨论】:

    • 谢谢!但是 viewport 命令的 20,30 是如何发挥作用的呢?这会影响 glOrtho2D 的内容吗?如果没有,为什么不呢?
    • @Alex:它并不会真正影响 glOrtho2D 的样子。我们是说:将我模型坐标中的-6的X坐标映射到视口的左边缘(已经映射到窗口中的像素20)。
    • 请注意:这不是 glOrtho2D,这是 gluOrtho2D()(参见 glu):opengl.org/sdk/docs/man2/xhtml/gluOrtho2D.xml,或 @ 987654326@opengl.org/sdk/docs/man2/xhtml/glOrtho.xml
    猜你喜欢
    • 1970-01-01
    • 2017-03-13
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多