2013-02-08 149 views
0

http://www.cs.uaf.edu/2007/spring/cs481/lecture/01_23_matrices.html關於OpenGL矩陣乘法

我剛讀完這個,但我有2個關於乘法的問題。

GL_POSITION = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex

這是最後的屏幕座標(X,Y)當我乘以它們。如果我只乘以gl_ModelViewMatrix * gl_Vertex或gl_ProjectionMatrix * gl_Vertex怎麼辦? gl_Vertex是什麼意思?

+0

爲了瞭解這行意味着整個深度,我真的建議得到協調的不同的理解空間prevalant在諸如模型空間,世界空間,眼睛/鏡頭空間,剪輯空間,投影空間,標準化設備座標空間等3D應用程序。 http://www.glprogramming.com/red/chapter03.html – legends2k

回答

1

如果我只乘以gl_ModelViewMatrix * gl_Vertex或gl_ProjectionMatrix * gl_Vertex怎麼辦?

然後投影矩陣(第一種情況)或模型視圖矩陣(第二種情況)不會生效。如果他們是身份矩陣,您將看不到效果。如果他們不是,那麼你的視角或位置可能是錯誤的。

gl_Vertex是什麼意思?

gl_Vertex是傳遞給管道輸入的頂點座標。

+0

謝謝但將gl_ModelViewMatrix * gl_Vertex會返回一些我可以在未來使用的重要事物嗎? – deniz

+0

@deniz是的,它在應用模型視圖轉換之後返回頂點位置。 [本文](http://www.songho.ca/opengl/gl_transform.html)很好地解釋了轉換 –

2

gl_Vertex是世界空間中的頂點座標。頂點和眼睛可以任意放置並定向在世界空間中。

乘以ModelViewMatrix後,您會在'eye-space'中獲得一個頂點座標,該座標系統的眼睛位於0,0,0。乘以投影矩陣(並做這種均勻的座標系劃分thingy)給你在屏幕空間的座標。這些不是像素座標,但是在屏幕/窗口的中心有一些標準化的座標系,其中0,0,0。視口變換是最後一個。它將圖像映射到窗口(像素?)座標。

的解釋中給出:

http://www.srk.fer.hr/~unreal/theredbook/ 第3章