這兩天在用opengl做專案,但是在做矩陣操作的時候出了問題,按照數學上想當然的方法進行矩陣操作居然得不到想要的結果。後來一查,directx用的是行矩陣,opengl用的是列矩陣。應該是這個影響到矩陣的執行順序了,因為我發現在opengl裡先寫的矩陣運算居然是後執行的,例如執行:
gltranslated(0.5, 0, 0);//平移
glscaled(2.8, 1, 1); //縮放
glrotated(90, 0, 0, 1); //旋轉
那麼你得到的結果其實是先旋轉,再縮放,再平移。
如果是在directx裡的話,得到的結果就是平移、縮放、旋轉。
看來opengl的矩陣變換有點坑啊。
之前做過乙個定點縮放的演算法,發現平移順序不對頭,感情原來是這樣。
矩陣 DirectX與OpenGL的不同
矩陣是三維圖形學中不可或缺的部分,幾乎所有和變換相關的操作都涉及矩陣,世界變換,檢視變換,投影變換,視口變換無一不需要矩陣,但是當今的兩大主流圖形庫directx和opengl對矩陣操作卻有著細微的差別,大多數的圖形學書籍都以opengl為基礎進行闡述,遊戲程式設計類的書籍則更多使用directx,...
矩陣 DirectX與OpenGL的不同
矩陣是三維圖形學中不可或缺的部分,幾乎所有和變換相關的操作都涉及矩陣,世界變換,檢視變換,投影變換,視口變換無一不需要矩陣,但是當今的兩大主流圖形庫directx和opengl對矩陣操作卻有著細微的差別,大多數的圖形學書籍都以opengl為基礎進行闡述,遊戲程式設計類的書籍則更多使用directx,...
矩陣 DirectX與OpenGL的不同
在三維圖形學中,一般使用四維矩陣,也就是四行四列的方陣,下面是乙個典型的四維矩陣 既然是三維圖形學,為什麼使用四維矩陣呢?主要有兩個原因,第一,為了平移變換,第二,為了區別點和向量 對於乙個四維向量,它是行向量還是列向量呢?directx使用行向量,如下。而opengl則使用列向量,如下 或者寫成 ...