如何在Glsl中更改Matrix中的值。 我想在第三栏中改变nMatrix的失误。
到目前为止,我试过这个:
mat4 nMatrix;
for (int i = 0; i < 3; i++) {
nMatrix = uMatrix;
for (int k = 0; k < 2; k++) {
//nMatrix[3].xyz = 0.0;
nMatrix[3][k]= 0.0;
}
}
但是我收到编译错误:
从1到3的向量的隐式截断。
答案 0 :(得分:4)
为什么你用一个不变的内环循环这三次?
无论如何,如果要在4x4矩阵中设置特定列(第3列),您可以这样做:
mat4 nMatrix = uMatrix; // Assuming uMatrix is mat4
nMatrix [2] = vec4 (0.0, 1.0, 2.0, 3.0);
当您使用数组下标表示法时,GLSL使用列主矩阵。这将允许您以vec4
的形式访问矩阵的第3列。原始代码段中的数组下标是一对一的,此外不清楚uMatrix
是否与nMatrix
的大小矩阵相同。