討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
關於 OpenGL 和 D3D 的 major matrix
更改我的閱讀文章字型大小
作者 : cxxlman(CxxlMan) C++優秀好手貼文超過1000則
[ 貼文 1034 | 人氣 3227 | 評價 1260 | 評價/貼文 1.22 | 送出評價 27 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/16 下午 12:20:50
在許久以來的傳說...

OpenGL 採用如下的的矩陣運算,把它的矩陣稱作 colum matrices

   m11 m12 m13 m14  x

   m21 m22 m23 m24  y

   m31 m32 m33 m34  z

   m41 m42 m43 m44  1


而 D3D 採用如下的的矩陣運算,把它的矩陣稱作 row matrices

        m11 m12 m13 m14

        m21 m22 m23 m24
   x y z 1
        m31 m32 m33 m34

        m41 m42 m43 m44


但那是一個錯誤的,那只能說是 "數學" 上的格式,實際上在程式記億體上的儲存方式如下...

OpenGL 採用如下的的矩陣儲存,它稱作 colum major matrices

float M[16] ={m11, m21, m31, m41,
       m12, m22, m32, m42,
       m13, m23, m33, m43,
       m14, m24, m34, m44};


D3D 採用如下的的矩陣儲存,它稱作 row major matrices

float M[16] ={m11, m12, m13, m14,
       m21, m22, m23, m24,
       m31, m32, m33, m34,
       m41, m42, m43, m44};

請睜大眼睛看清楚,這麼一搞 OpenGL 和 D3D 的 Matrix 不就是一樣的東西,那些 colum major 和 row major 根本就是瞎扯蛋,衝其量只能算是記憶體的陣列對 "數學" 上矩陣的不同排列方式,是如何的選取佈局。

所以你也可以說 OpenGL 是 row major matrices :),但正確的說法是不管是 OpenGL 或 D3D 都不存在 major matrix 的問題,那是 陣列 對 數學矩陣 的選取問題。

資料來源 http://www.mindcontrol.org/~hplus/graphics/matrix-layout.html
作者 : ozzy123(ozzy) VC++優秀好手資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4479 | 人氣 37262 | 評價 11000 | 評價/貼文 2.46 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/16 下午 01:52:51
http://www.cnblogs.com/soroman/archive/2008/03/21/1115571.html
作者 : cxxlman(CxxlMan) C++優秀好手貼文超過1000則
[ 貼文 1034 | 人氣 3227 | 評價 1260 | 評價/貼文 1.22 | 送出評價 27 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/16 下午 03:19:55
用一個簡單實例,若有一本書的例子 X 右移 2 個單位,寫成如下,這是 colum matrices 的寫法

   1 0 0 2  x

   0 1 0 0  y

   0 0 1 0  z

   0 0 0 1  1


現在要把它用程式去實作成陣例,不管是 OpenGL 或 D3D 都要用 colum major matrices 來實作

float M[16] ={1, 0, 0, 0,
       0, 1, 0, 0,
       0, 0, 1, 0,
       2, 0, 0, 1};

因為 OpenGL 和 D3D 都採用相同的 major matrices 準則,也就是用 colum major matrices 對待 colum matrices,用 row major matrices 對待 row matrices




 板主 : 白老鼠(Gary)
 > OpenGL - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - OpenGL - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
OpenGL
1 白老鼠(Gary) 2720 
2 CROMAYEN2000 1530 
3 aming 500 
4 東昇 380 
5 PLAYER 120 
6 富伯 110 
7 qq 100 
8 NDark 80 
9 ozzy 60 
10 simula 60 
OpenGL
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.1719971