2014-04-15 46 views
2

我最近開始使用LWJGL,並注意到glOrtho方法需要參數left,right,bottom,top,並且找不到它們對應的內容。glOrtho參數對應的是什麼?

我迷茫的時候,我注意到

glOrtho(1, 1, 1, 1, 1, -1); 

是一樣的

glOrtho(-1, 1, -1, 1, 1, -1); 

我是在說這些來的代碼片段糾正是一樣的,如果是這樣,爲什麼?

回答

4

不,他們是不一樣的:

glOrtho(1, 1, 1, 1, 1, -1); 

只會產生一個GL_INVALID_OPERATION錯誤,表彰有沒有進一步的影響。當left == right或top == bottom或near == far時發生錯誤。 (如果它沒有檢查這種情況,則會發生零除)。

glOrtho(-1, 1, -1, 1, 1, -1); 

實際上什麼都不做,因爲它會將當前矩陣乘以單位矩陣。

它可能看起來好像這些命令具有相同的結果,但實際發生的情況完全不同。

4

正投影是一個長方體(aka一個盒子)。調用glOrtho的參數定義此框的裁剪平面或邊。任何位於投影盒之外的東西都不會被渲染。

關於您的示例調用,第一個調用(glOrtho(1,1,1,1,1,-1))無效並生成GL_INVALID_OPERATION)。爲什麼?正投影受到由於right == lefttop == bottom 0錯誤定義爲

enter image description here

通知的分割。

第二個示例(glOrtho(-1,1,-1,1,1,-1))只是簡單地創建identity matrix

Chapter 3 - OpenGL Programming Guide - Projection Transforms

ScratchPixel - Orthographic Projection Tutorial