我最近開始使用LWJGL,並注意到glOrtho
方法需要參數left,right,bottom,top,並且找不到它們對應的內容。glOrtho參數對應的是什麼?
我迷茫的時候,我注意到
glOrtho(1, 1, 1, 1, 1, -1);
是一樣的
glOrtho(-1, 1, -1, 1, 1, -1);
我是在說這些來的代碼片段糾正是一樣的,如果是這樣,爲什麼?
我最近開始使用LWJGL,並注意到glOrtho
方法需要參數left,right,bottom,top,並且找不到它們對應的內容。glOrtho參數對應的是什麼?
我迷茫的時候,我注意到
glOrtho(1, 1, 1, 1, 1, -1);
是一樣的
glOrtho(-1, 1, -1, 1, 1, -1);
我是在說這些來的代碼片段糾正是一樣的,如果是這樣,爲什麼?
不,他們是不一樣的:
glOrtho(1, 1, 1, 1, 1, -1);
只會產生一個GL_INVALID_OPERATION
錯誤,表彰有沒有進一步的影響。當left == right或top == bottom或near == far時發生錯誤。 (如果它沒有檢查這種情況,則會發生零除)。
glOrtho(-1, 1, -1, 1, 1, -1);
實際上什麼都不做,因爲它會將當前矩陣乘以單位矩陣。
它可能看起來好像這些命令具有相同的結果,但實際發生的情況完全不同。
正投影是一個長方體(aka一個盒子)。調用glOrtho
的參數定義此框的裁剪平面或邊。任何位於投影盒之外的東西都不會被渲染。
關於您的示例調用,第一個調用(glOrtho(1,1,1,1,1,-1)
)無效並生成GL_INVALID_OPERATION
)。爲什麼?正投影受到由於right == left
和top == bottom
0錯誤定義爲
通知的分割。
第二個示例(glOrtho(-1,1,-1,1,1,-1)
)只是簡單地創建identity matrix。
Chapter 3 - OpenGL Programming Guide - Projection Transforms