1

如何在 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;
    }
}

但我得到一个编译错误:

将向量从大小 1 隐式截断到大小 3。

4

1 回答 1

4

你为什么用一个不变的内循环循环这三遍?

无论如何,如果您想在 4x4 矩阵中设置特定列(第 3 列),您可以这样做:

mat4 nMatrix = uMatrix; // Assuming uMatrix is mat4
nMatrix [2]  = vec4 (0.0, 1.0, 2.0, 3.0);

当您使用数组下标表示法时,GLSL 使用列主矩阵。这将使您可以访问矩阵的第 3 列作为vec4. 您在原始代码片段中的数组下标是一对一的,而且还不清楚是否uMatrixnMatrix.

于 2013-10-20T20:10:19.553 回答