Opengl 在Glsl矩阵中设置列

Opengl 在Glsl矩阵中设置列,opengl,glsl,Opengl,Glsl,如何在Glsl中更改矩阵中的值。 我想更改第三列中nMatrix的错误 到目前为止,我试过: mat4 nMatrix; 对于(int i=0;i

如何在Glsl中更改矩阵中的值。 我想更改第三列中nMatrix的错误

到目前为止,我试过:

mat4 nMatrix;
对于(int i=0;i<3;i++){
nMatrix=uMatrix;
对于(int k=0;k<2;k++){
//nMatrix[3].xyz=0.0;
n矩阵[3][k]=0.0;
}
}
但我得到一个编译错误:

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


为什么你要用一个不变的内环来循环三次呢

无论如何,如果要在4x4矩阵中设置特定列(第3列),可以执行以下操作:

mat4 nMatrix=uMatrix;//假设uMatrix为mat4
nMatrix[2]=vec4(0.0,1.0,2.0,3.0);

当使用数组下标表示法时,GLSL使用列主矩阵。这将允许您以
vec4
的形式访问矩阵的第三列。您在原始代码片段中的数组下标被关闭了一个,而且还不清楚
uMatrix
是否与
nMatrix

的矩阵大小相同,为什么要使用不变的内环循环这三次

无论如何,如果要在4x4矩阵中设置特定列(第3列),可以执行以下操作:

mat4 nMatrix=uMatrix;//假设uMatrix为mat4
nMatrix[2]=vec4(0.0,1.0,2.0,3.0);
当使用数组下标表示法时,GLSL使用列主矩阵。这将允许您以
vec4
的形式访问矩阵的第三列。原始代码段中的数组下标被关闭了1,而且还不清楚
uMatrix
是否与
nMatrix
的矩阵大小相同