【问题标题】:"Vertex attribute locations are always 4-component", Does that mean that i can use mat2 as vertex attribute without any problems?? (OpenGL)“顶点属性位置始终是 4 分量”,这是否意味着我可以毫无问题地将 mat2 用作顶点属性? (OpenGL)
【发布时间】:2023-12-28 04:05:01
【问题描述】:

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

【问题讨论】:

    标签: opengl glsl


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我的意思是,你不应该在 cpu 上做额外的工作来单独设置 4x4 矩阵的每一行。
    • 感谢您的回答,正是我所需要的。
    • 这行列的东西让人迷惑,有人称之为倒置。
    • @NameThatDisplays:这并不令人困惑; people just explain it wrong.
    • 我知道,这就是它令人困惑的原因,人们被错误地教导错误,甚至不确定我是否正确使用它们。
    最近更新 更多