我对glOrtho()
遇到的麻烦感到有些困惑。我的代码在以下情况下工作: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是图像的高度和宽度。
我使用Windows 7
和Qt 4.7.4
。
如果您需要更多信息,请告诉我。
编辑:在原来的错字,它应该读取glOrtho(0, _width, -_height, 0, 0, 1)
而不是glOrtho(0, _width, _height, 0, 0, 1)
。
感谢您的回复。我认为你一定是对的。我会研究glWindowPos并做出决定。我们希望从场景1改变到场景2,以避免映射到另一个坐标系,但是根据您的描述,我们可能不得不这样做。谢谢! – user1585453 2012-08-08 19:37:30