"Vertex attribute locations are always 4-component",这是否意味着我可以毫无问题地使用 mat2 作为顶点属性?? (OpenGL)

"Vertex attribute locations are always 4-component", Does that mean that i can use mat2 as vertex attribute without any problems?? (OpenGL)

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

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

是的,mat2 是顶点属性的有效类型。但是,when used as attributes所有 矩阵类型都被视为矩阵列的数组。并且对数组进行处理,使每个数组元素都是一个单独的属性。

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

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

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