如何更改 Glsl 中矩阵中的值?我想改变第三列中 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;
}
}
Run Code Online (Sandbox Code Playgroud)
但我得到一个编译错误:
将向量从大小 1 隐式截断为大小 3。
为什么要使用不变的内循环循环三次?
无论如何,如果您想在 4x4 矩阵中设置特定列(第三列),您可以这样做:
mat4 nMatrix = uMatrix; // Assuming uMatrix is mat4
nMatrix [2] = vec4 (0.0, 1.0, 2.0, 3.0);
Run Code Online (Sandbox Code Playgroud)
当您使用数组下标表示法时,GLSL 使用列主矩阵。这将使您可以将矩阵的第三列作为vec4. 原始代码片段中的数组下标是相差一的,而且还不清楚是否uMatrix与 相同大小的矩阵nMatrix。