我正在OpenGL中开发一个4分割查看器。一个视图是透视图,其他视图用于正交投影(前,左,上)。
我写了一个方法,从(-1,-1,-1)到(1,1,1)绘制一个立方体,它在透视视图中运行良好,但我不能让它在我的工作使用glOrtho(...)的视图。
现在我把它设置成这样:
glOrtho(0, width, height, 0, 0, 1);
有趣的是,视图根本没有显示多维数据集。我在OpenGL中为视图实现了一个边框,但它可以正确显示。
我正在使用Qt并编写了一个QGLWidget的派生类。
答案 0 :(得分:1)
glOrtho
在model transform
和view transform
之后的视图空间中定义了6个剪裁平面。所以你应该在Eye Space
而不是Screen Space
中指定glOrtho的参数。在您的情况下,glOrtho(-width/(float)height, width/height, -1.0f, 1.0f, -1.0f, 1.0f)
假设eye position
位于(0.0, 0.0, 0.0)
且viewport
为width
height
。如果近平面位于观察者后面(眼睛位置),则NearVal
的{{1}}参数应为负。你可能想要男人glOrtho。 glOrtho
的{{3}}可以为您提供有关不同坐标空间转换的详细信息,例如Cg tuturial
,Object Space
,World Space
,Eye Space
, Clip space
和Normalized Device Space
。