1

我正在用 OpenGL 开发一个 4 拆分查看器。一个视图是透视图,其他视图用于正交投影(前、左、上)。

我写了一个从 (-1,-1,-1) 到 (1,1,1) 绘制立方体的方法,它在透视图中效果很好,但我无法让它在我使用的视图中工作glOrtho(...).

现在我这样设置:

    glOrtho(0, width, height, 0, 0, 1);

有趣的是,视图根本没有显示立方体。我在 OpenGL 中为视图实现了一个边框,但它可以正确显示。

我正在使用 Qt 并编写了 QGLWidget 的派生类。

4

1 回答 1

1

glOrthomodel transform在和之后的视图空间中定义 6 个剪裁平面view transform。所以你应该在 中指定 glOrtho 的参数Eye Space,而不是Screen Space. 在你的情况下,它应该是glOrtho(-width/(float)height, width/height, -1.0f, 1.0f, -1.0f, 1.0f)假设eye positionis in(0.0, 0.0, 0.0)和 your viewportis widthby height。如果近平面在观察者后面(眼睛位置) ,则NearVal参数glOrtho应该为负。您可能想要 man glOrtho。的第 4 章可以Cg tuturial详细介绍不同坐标空间的变换,即Object SpaceWorld SpaceEye Space、和。Clip spaceNormalized Device SpaceWindow Space

于 2012-05-17T11:40:56.123 回答