2013-10-03 92 views
0

可能是一個奇怪的問題,但我與OpenGL的3D相當雛,所以有人請告訴我如何繪製簡單的2D盒(C++首選)時:模型變換和投影矩陣

GL_PROJECTION_MATRIX = [1.125, 0.00, 0.00, 0.0] 
         [0.000, 2.00, 0.00, 0.0] 
         [0.000, 0.00, -1.0, 0.0] 
         [0.000, -1.0, 0.00, 1.0] 

    GL_MODELVIEW_MATRIX = [1.0, 0.0, 0.0, 0.0] 
         [0.0, 1.0, 0.0, 0.0] 
         [0.0, 0.0, 1.0, 0.0] 
         [0.0, 0.0, 0.0, 1.0] 

更改這兩個是不可能的,由於外部代碼。

回答

2

GL所做的固定功能是將每個頂點先乘以模型視圖,再乘以投影矩陣,最後除以(剪輯空間)W分量以達到NDC空間。在NDC空間中,觀察體積沿着所有3個維度由立方體[-1,1]表示。

因此,一般情況下,通過了解使用的矩陣,您可以通過反演變換的變換並回溯NDC立方體的角點,將觀察體投影回眼睛或物體空間(假設矩陣可以是倒置,通常情況是這樣)。

假設固定函數GL的典型矩陣存儲順序,該投影矩陣是某種正交投影,所以沒有透視失真,並且在眼睛空間/物體空間中觀看體積將是立方體。那麼在[-0,8889,0.8889](左,右)中繪製x的所有東西,[0,1](底部/頂部)中的y和[ - 1,1](遠!,近)應該是可見的。