&引用;顶点属性位置始终为“4分量”;,这是否意味着我可以使用mat2作为顶点属性而没有任何问题??(OpenGL)

&引用;顶点属性位置始终为“4分量”;,这是否意味着我可以使用mat2作为顶点属性而没有任何问题??(OpenGL),opengl,glsl,Opengl,Glsl,我知道顶点属性位置始终是4分量的,但我不能完全确定它是否也适用于mat2(和其他mat2类型)。这取决于您所说的“没有任何问题”的意思 是,mat2是顶点属性的有效类型。然而,所有矩阵类型都被视为矩阵列的数组。数组的处理方式是,每个数组元素都是一个单独的属性 因此一个mat2算作两个属性,而不是一个(特别是每个属性的前两个组件)。如果这对你来说不是问题,那么你可以这样做 如果要将mat2填充到一个属性中,则必须手动执行: layout(location = X) in vec4 matrix_a

我知道顶点属性位置始终是4分量的,但我不能完全确定它是否也适用于mat2(和其他mat2类型)。

这取决于您所说的“没有任何问题”的意思

是,
mat2
是顶点属性的有效类型。然而,所有矩阵类型都被视为矩阵列的数组。数组的处理方式是,每个数组元素都是一个单独的属性

因此一个
mat2
算作两个属性,而不是一个(特别是每个属性的前两个组件)。如果这对你来说不是问题,那么你可以这样做

如果要将
mat2
填充到一个属性中,则必须手动执行:

layout(location = X) in vec4 matrix_attrib;
...
void main()
{
  mat4 mAttrib(matrix_attrib.xy, matrix_attrib.zw);
}

这取决于你所说的“没有任何问题”是什么意思

是,
mat2
是顶点属性的有效类型。然而,所有矩阵类型都被视为矩阵列的数组。数组的处理方式是,每个数组元素都是一个单独的属性

因此一个
mat2
算作两个属性,而不是一个(特别是每个属性的前两个组件)。如果这对你来说不是问题,那么你可以这样做

如果要将
mat2
填充到一个属性中,则必须手动执行:

layout(location = X) in vec4 matrix_attrib;
...
void main()
{
  mat4 mAttrib(matrix_attrib.xy, matrix_attrib.zw);
}

我的意思是,您不必在cpu上做额外的工作来分别设置4x4矩阵的每一行。谢谢您的回答,这正是我所需要的。这个行-列的东西令人困惑,有些人称它为反向。@名称显示:它不困惑。我知道,这就是为什么它令人困惑的原因,人们被认为是错误的,教学是错误的,甚至不确定我是否正确使用了它们。我的意思是,你不应该在cpu上做额外的工作来分别设置每一行4x4矩阵。谢谢你的回答,正是我所需要的。这行-列的东西令人困惑,有些人将其称为反向。@名称显示:这并不令人困惑。我知道,这就是为什么它令人困惑的原因,人们被认为是错误的,教学是错误的,甚至不知道我是否正确地使用它们。