我對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