Metal 作为全局变量的金属缓冲区

Metal 作为全局变量的金属缓冲区,metal,Metal,我有一个缓冲区,可以将鼠标位置传递给 kernel void compute(texture2d<float, access::write> output [[texture(0)]], constant float2 &mouse [[buffer(1)]],//<-- mouse buffer uint2 gid [[thread_position_in_grid]]) { ... }

我有一个缓冲区,可以将鼠标位置传递给

kernel void compute(texture2d<float, access::write> output [[texture(0)]],
                    constant float2 &mouse [[buffer(1)]],//<-- mouse buffer
                    uint2 gid [[thread_position_in_grid]])
{
... 
}

Metal不支持可变全局变量。您应该将必要的值作为参数传递给所有使用它们的函数。还有其他方法(比如将所有函数包装在一个结构或类中,并使用成员变量模拟全局变量),但我建议只在函数之间传递所需的值

float abc(float p){

float a = p * globalmouseposition.x;

return a;

}