2016-09-23 30 views
0

我有一个通过鼠标位置传递给金属 - 缓冲液作为全局变量

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

我怎样才能使它作为全局常量,这样我可以在任何函数访问它的内核之外的缓冲区?例如:

float abc(float p){ 

float a = p * globalmouseposition.x; 

return a; 

} 

回答

1

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