OpenGL中的矩陣儲存方式

2021-08-22 01:46:57 字數 1096 閱讀 5092

在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矩陣...