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;
}