Металл - буфер как глобальная переменная

У меня есть буфер, который передает позицию мыши в

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;

}

person sooon    schedule 23.09.2016    source источник


Ответы (1)


Metal не поддерживает изменяемые глобальные переменные. Вы должны передать необходимые значения в качестве параметров всем функциям, которые их используют. Существуют и другие подходы (например, обертывание всех ваших функций в структуре или классе и использование переменных-членов для имитации глобальных переменных), но я рекомендую просто передавать нужные вам значения от функции к функции.

person warrenm    schedule 23.09.2016