Можно ли получить доступ к отдельным элементам матрицы типа glsl mat4? Как?
Как вы получаете доступ к отдельным элементам glsl mat4?
Ответ 1
В разделе 5.6 справочника GLSL говорится, что вы можете получить доступ к элементам массива 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 по умолчанию имеет основные матрицы столбцов, что означает, что доступ имеет формат mat[col][row]
. В этом примере m[2][3]
устанавливает четвертый ROW (индекс 3) третьего COLUMN (индекс 2) в 2.0. В примере m[1]=vec4(2.0)
он устанавливает полный столбец сразу (поскольку m[1]
ссылается на столбец # 2, когда используется только один индекс, это означает, что COLUMN. m[1]
относится к SECOND COLUMN VECTOR).