设置 Glsl 矩阵中的列

Pri*_*s0n 1 opengl glsl

如何更改 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。

And*_*man 5

为什么要使用不变的内循环循环三次?

无论如何,如果您想在 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