在GLSL中,我只需使用out vec3 array[10];
将数组从顶点着色器传递到片段着色器。然而,在金属中,我想这样做:
struct FragmentIn {
float4 position [[position]];
float3 array[10];
};
这会产生以下错误:
Type 'FragmentIn' is not valid for attribute 'stage_in' because field 'array' has invalid type 'float3 [10]'
我该如何解决这个问题?我需要使用片段着色器将使用的每顶点数据进行某些计算。
答案 0 :(得分:4)
您需要“展开”数组:
struct FragmentIn {
float4 position [[position]];
float3 thing0;
float3 thing1;
float3 thing2;
float3 thing3;
float3 thing4;
float3 thing5;
float3 thing6;
float3 thing7;
float3 thing8;
float3 thing9;
};