我对自己遇到的麻烦感到有些困惑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)
.