在opengl中,矩陣是以列優先的方式(column-major order)儲存的,而一般的數學書上是以行優先的方式(row-major order)儲存的。
列優先:
m0 m4 m8 m12
m1 m5 m9 m13
m2 m6 m10 m14
m3 m7 m11m15
行優先:
m0 m1 m2 m3
m4 m5 m6 m7
m8 m9 m10 m11
m12 m13 m14 m15
在opengl中,矩陣是用一維陣列來儲存的:m[16]。
可以用arb_transpose_matrix來實現2者的轉換:
void loadtransposematrixarb(t m[16]);
void multtransposematrixarb(t m[16]);
提供的標記(對getbooleanv, getintegerv, getfloatv, getdoublev函式):
transpose_modelview_matrix_arb
transpose_projection_matrix_arb
transpose_texture_matrix_arb
transpose_color_matrix_arb
loadtransposematrixarb(m)相當於:
float n[16];
transpose(m,n)
loadmatrix(n);
multtransposematrixarb(m)相當於:
float n[16];
transpose(m,n);
multmatrix(n);
getfloatv(transpose_modelview_matrix_arb,m)相當於:
float n[16];
getfloatv(modelview_matrix_arb,n);
transpose(n,m);
transpose_projection_matrix_arb,transpose_texture_matrix_arb和 transpose_color_matrix_arb類似。
稀疏矩陣的儲存方式
稀疏矩陣就是指乙個矩陣中的大部分元素都是0或者是某乙個相同的元素,而稀疏矩陣往往有一些有規律的形式,比如上三角 下三角等等,這種有規律的矩陣又稱為特殊矩陣。特殊矩陣的儲存需要根據特殊矩陣哪點特殊,然後用數學的手段來進行儲存,這裡就不展開了。我們只講一般情況下的稀疏矩陣的儲存方式。儲存方式常見的有兩大...
稀疏矩陣儲存方式
在資料預處理中,我們需要採集前的資料是非常龐大的。不妨將資料集d視作乙個矩陣,每一行對應乙個樣本,每一列對應某個特徵。而在現實生活中,例如文件分類任務,以每乙個字詞作為乙個特徵,特徵屬性多大成千上萬,即數千數萬列,而相當一部分特徵對於所考慮的問題具有 稀疏性 也就是矩陣中許多列與當前學習任務無關。這...
openGL中矩陣相乘的順序
1,在opengl中所有的檢視變換,模型變換 都是4 4矩陣,每個後續的glmultimatrix n 或者變換函式,gltranslate glrotate 等都是把乙個新的4 4矩陣與當前的矩陣m相乘,不同的是 變換函式gltranslate glrotate 等會根據函式引數構造乙個4 4矩陣...