web-dev-qa-db-ja.com

glsl mat4の個々の要素にどのようにアクセスしますか?

Glsl mat4タイプのマトリックスの個々の要素にアクセスすることは可能ですか?どうやって?

51
bobobobo

GLSLリファレンスマニュアルのセクション5.6では、_mat4_スタイルの構文を使用して、次の方法で_operator[][]_配列要素にアクセスできます。

_mat4 m;
m[1] = vec4(2.0); // sets the second column to all 2.0
m[0][0] = 1.0; // sets the upper left element to 1.0
m[2][3] = 2.0; // sets the 4th element of the third column to 2.0
_

OpenGLのデフォルトはcolumn major matrixであり、アクセスは_mat[col][row]_の形式であることを忘れないでください。この例では、_m[2][3]_は、3番目のCOLUMN(インデックス2)の4番目の行(インデックス3)を2.0に設定します。 m[1]=vec4(2.0)の例では、列全体を一度に設定しています(_m[1]_は列#2を参照するため、1つのインデックスのみが使用される場合、COLUMNを意味します。_m[1]_は第2列ベクトル)。

59
bobobobo