我的金属着色器实现中有以下声明:
struct InVertex {
packed_float3 pos;
packed_float2 textureCoord;
packed_uchar4 color;
};
使用包装声明是否有速度限制?如果是,如何测量?
答案 0 :(得分:1)
基于此Metal Shading Language Specification
您不能使用 stage_in 属性来声明打包的结构成员 向量,矩阵,结构,位域,类型的引用或指针或标量数组, 向量或矩阵。
MSL函数和参数具有以下附加限制: 顶点或片段函数的返回类型不能包含 压缩向量类型,矩阵类型,结构类型, 引用或类型的指针。
您可以使用数组索引来访问压缩矢量数据类型的组件。但是你 无法使用.xyzw或.rgba选择语法访问压缩矢量数据的组件 类型。
使用压缩顶点结构是否有速度损失?
此answer中对它的描述非常好,总之,从速度方面,您会从中受益,尤其是在传递大量数据时。