【问题标题】:OpenGL: 2D Vertex coordinates to 2D viewing coordinates?OpenGL:2D顶点坐标到2D查看坐标?
【发布时间】:2015-12-07 11:53:32
【问题描述】:

我正在为一个类项目实现一个光栅化器,目前我卡在什么方法/如何将顶点坐标转换为查看窗格坐标。

我得到了一个三角形二维坐标的顶点列表,比如

 0 0 1  
 2 0 1  
 0 1 1

例如,我在大小为 400X400 像素的查看窗格(使用 OpenGL 和 GLUT)中进行绘制。

我的问题是我如何决定在查看窗格中的哪个位置放置这些顶点,假设

1) 我希望坐标在屏幕中心以 0,0 为中心
2) 我想填满屏幕的大部分(让我们说这个例子,屏幕是最大 x 坐标 + 1 个宽度等)
3) 我可以使用任何和所有 OpenGL 和 GLUT 的标准库函数。

谢谢!

【问题讨论】:

    标签: opengl graphics transform glut


    【解决方案1】:

    http://www.opengl.org/sdk/docs/man/xhtml/glOrtho.xml

    要以 0 为中心,请使用对称的左/右和下/上。当心近/远有些随意,但通常(在示例中)选择为 -1..+1,这对于 z=1 处的三角形可能是个问题。

    如果您关心纵横比,请确保左右和上下与窗口的宽度/高度成比例。

    【讨论】:

      【解决方案2】:

      您应该考虑作为您的体积视图的平截头体,并通过转换对象以考虑它们的位置来计算坐标,this 非常彻底地解释了该理论..

      基本上,您必须使用根据您的视图特征计算的指定投影矩阵来投影对象:

      • 根据 z(深度)值缩放它们:您将 y 和 x 缩放到与 z 成反比的比例
      • 您可以缩放和移动坐标以适应视图的宽度

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-06-29
        • 2012-01-19
        • 1970-01-01
        • 2018-05-25
        • 1970-01-01
        • 1970-01-01
        • 2015-01-01
        • 1970-01-01
        相关资源
        最近更新 更多