在Glsl矩阵中设置列

时间:2013-10-20 19:58:58

标签: opengl glsl

如何在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的向量的隐式截断。

1 个答案:

答案 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的大小矩阵相同。