你如何访问glsl mat4的各个元素?

bob*_*obo 51 glsl

是否可以访问glsl mat4类型矩阵的各个元素?怎么样?

bob*_*obo 60

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
Run Code Online (Sandbox Code Playgroud)

请记住,OpenGL默认为列主要矩阵,这意味着访问具有格式mat[col][row].在该示例中,m[2][3]将第3列(索引2)的第4行(索引3)设置为2.0.在该示例中m[1]=vec4(2.0),它一次设置整个列(因为m[1]引用列#2,当仅使用一个索引时,它意味着COLUMN.m[1]引用第二列矢量).

  • 你也可以使用m [1] .xyzw. (27认同)
  • 列或行是毫无意义的.更重要的是:矩阵的平移分量是(m [3] [0],m [3] [1],m [3] [2])或(m [0] [3],m [1] ] [3],m [2] [3])? (9认同)
  • mat [col] [row]更直观imho,因为那些"参数"总是看起来像x,y位置给我..我认为默认数学写作mat [row] [col] - > mat [y] [x]是一个最大的数学失败......(恕我直言:) (6认同)
  • 你对`默认为什么'是什么意思?有没有可以切换到行主矩阵的选项? (3认同)
  • @Ruslan是的,layout(row_major)说明符。 (2认同)