投影矩陣投影到子空間從較高維空間中的向量。我本來期望在OpenGL投影矩陣投影中的R 3 一個點到2維平面。這似乎得到了互聯網上很多文獻的支持。許多網站暗示投影矩陣將3D世界投影到飛機上,這就是繪製的。不過,我感覺大多數這些解釋都在跳過幾個步驟。他們中的許多人似乎互相矛盾,所以我想要澄清我從我自己的分析中得出的結論。OpenGL中的投影矩陣真的是「投影矩陣」嗎?
可有人請確認(或如果錯誤是正確的)是:
- 在OpenGL的投影變換是不實際的投影矩陣,而是把一個點到剪輯空間(這仍然是一部分將R 3 域)和實際投影到二維平面上後發生,因爲管道的固定功能。
- 投影矩陣不適用的透視分割;但是它確實需要設置w座標,以便稍後發生透視分割(作爲管線的固定功能),點正確放置在NDC的內部或外部。
- 剪輯空間上的X,Y軸之間的箱(-1,+ 1),和(n,f)關於z軸而NDC是介乎一個盒子(-1,+ 1)上的所有軸。
我分析以下投影矩陣來上述結論:
[ 2n/(r-l) 0 (r+l)/(r-b) 0 ]
[ 0 2n/(t-b) (t+b)/(t-b) 0 ]
[ 0 0 -(f+n)/(f-n) -2fn/(f-n) ]
[ 0 0 -1 0 ]
從那個分析我的結論是,這是截錐內的任何點會沿x,y中的剪輯的邊界內軸;它可能在沿着z軸的邊界之外,但是一旦發生透視分割(現在w是舊的-z),該點將完全位於剪輯空間內。
由此我也得出結論:對於MVP轉換後可見的點,它的x,y和z/w座標必須在+/- 1之間,並且透視分割和實際投影發生在頂點之後着色器。
如果具體到現代的OpenGL(3.3內核或更高版本)適用的答案只有請。