2014-10-27 192 views
0

我有關於OpenGL投影,視圖和模型矩陣的問題。 在DirectX 9中,我可以輕鬆操縱矩陣內容,然後通過使用SetTransformfunction來應用它。OpenGL投影,視圖和世界矩陣

我在MSDN OpenGL glLoadMatrixffunction中看到,但它只改變當前矩陣,我可以改變glMatrixModefunction

該函數獲取3個選項的參數:GL_MODELVIEW,GL_PROJECTIONGL_TEXTURE。但這是問題所在。我如何修改世界矩陣?

在DirectX 9的我可以使用SetTransformstate types之一:D3DTS_WORLD(宏),D3DTS_VIEWD3DTS_PROJECTION和爲它們設置矩陣。

+0

您是否僅限於使用舊的古老功能?此外,我會建議永遠不要從微軟讀取有關OpenGL的任何信息。 – CoffeeandCode 2014-10-27 11:09:05

+0

事實上,使用openGL中的着色器,你可以直接設置和應用你的矩陣(你甚至可以選擇不使用矩陣) – 2014-10-27 11:16:39

+0

是的,我僅限於使用OpenGL <3(2.1 max),所以glUniform不在。 – Popiel 2014-10-27 13:01:25

回答

2

GL_MODELVIEW矩陣正是它的名字;模型和視圖矩陣的組合。通常,首先應用視圖轉換,然後爲每個模型推送一個矩陣,應用模型轉換,繪製模型,然後彈出矩陣。但是,如果你使用着色器(並且你必須在OpenGL 3.1+中沒有兼容性配置文件),那麼你可以使用制服將矩陣傳遞給着色器,不管你想要如何,包括分割模型和視圖矩陣如此渴望。

+0

感謝您的幫助!所以,這就是它的工作原理! – Popiel 2014-10-27 13:00:25