我最近開始學習OpenGL,並且就GL和着色器的通信而言,我已經獲得了很好的能力,但是我對座標系有點不清楚。在OpenGL中,創建透視投影矩陣對於對象的座標有什麼影響?
我使用的是OpenGL ES 2.0,所以我必須自己做所有的矩陣管理。我終於明白了以下幾點:
爲了觀察正確的結果乘以矩陣作爲模型*視*投影(這是非常合情合理的矩陣乘法是不可交換的)。
模型矩陣表示繪圖基元的縮放,旋轉,平移等。在三維空間中移動基元涉及到應用於該矩陣的轉換。
視圖矩陣表示許多人引用它的「相機」。對象與查看器之間的距離以及對象周圍的眼睛旋轉來自對該矩陣的轉換。
最後,透視矩陣表示場景存在的3D空間。我遵循一些主要使用透視方法使用視場和高寬比的示例。這是我的困惑開始的地方。
原始座標在區間+ - [0,1]中以浮點形式給出。但透視矩陣表示從近Z到遠Z的3D空間(我已經分別看到它們分別爲0和100)。我很困惑,原始的座標如何映射到這個空間。顯然,我的線性代數技巧並不像我希望他們那樣強大。任何人都可以澄清這些點如何映射到這個空間?例如,許多示例將立方體定義爲+ - (.5,.5,.5)。我使用near-z = 0,far-z = 100的透視martrix和整個顯示器的縱橫比,這是否意味着立方體總是在這些維度中的每一個的.5處?我的意思是,如果透視矩陣從x = -5到x = 5,x座標最終是0.5(-5)= -2.5?
「*將矩陣乘以模型*視圖*投影*」如果這是您觀察到的,這是因爲您的矩陣是轉置的。 – 2013-02-21 19:31:34