Qt 结果不是我所期望的

Qt 结果不是我所期望的,qt,opengl,Qt,Opengl,对于我在glOrtho()上遇到的麻烦,我有点困惑。我的代码在以下情况下工作: // Scenario 1 ... glOrtho(0, _width, 0, _height, 0, 1); ... glRasterPos2i(0, 0); ... 但是,我对该坐标系不满意,我希望它使用: // Scenario 2 ... glOrtho(0, _width, -_height, 0, 0, 1); ... glRasterPos2i(0, -_height); ... 不幸的是,在我的代

对于我在
glOrtho()
上遇到的麻烦,我有点困惑。我的代码在以下情况下工作:

// Scenario 1
...
glOrtho(0, _width, 0, _height, 0, 1);
...
glRasterPos2i(0, 0);
...
但是,我对该坐标系不满意,我希望它使用:

// Scenario 2
...
glOrtho(0, _width, -_height, 0, 0, 1);
...
glRasterPos2i(0, -_height);
...
不幸的是,在我的代码中只更改了上面的两行,就留下了一个空白屏幕。我假设我不了解
glOrtho()
glRasterPos2i()
是如何工作的,因为我对OpenGl相当陌生,所以我尝试了以下方法:

// Scenario 3
...
glOrtho(0, _width, -_height, 1, 0, 1);
...
glRasterPos2i(0, -_height);
...
而且,令我惊讶的是,它成功了!为什么会这样?以上代码不足以满足我的目的,因此我将坚持使用场景1,除非我能解决我的问题。有人知道为什么场景1和3可以工作,但场景2不能?根据我的网络搜索,场景2应该可以工作,所以我一定是误解了什么

如果有帮助,我将使用
glDrawPixels()
绘制图像,其中_height和_width是图像的高度和宽度

我正在使用
windows7
qt4.7.4

如果你需要更多的信息,请告诉我


编辑:在原稿中键入,它应为
glOrtho(0,0,0,1)
,而不是
glOrtho(0,0,0,0,1)
,光栅位置在窗口的角落。我猜舍入误差在某些情况下会导致位置被剪裁,但在其他情况下不会


我认为答案是
glWindowPos()
,它是在1.4版中添加的。正如名称所说,它直接在窗口坐标中设置光栅位置,不受modelview和投影矩阵的影响。重要的是,光栅位置始终有效,即使该位置位于窗口边界上或之外。缺点是,在调用
glWindowPos()

之前,您必须自己进行坐标映射,谢谢您的回复。我想你一定是对的。我会调查一下,然后做出决定。我们希望将场景1更改为场景2,以避免映射到另一个坐标系,但根据您的描述,我们可能不得不这样做。谢谢