Я создал текстуру MTL следующим образом:
descTex=[MTLTextureDescriptor texture2DDescriptorWithPixelFormat:MTLPixelFormatRGBA8Unorm width:texCamWidth height:texCamHeight mipmapped:NO];
descTex.usage = MTLTextureUsageShaderWrite | MTLTextureUsageShaderRead ;
[descTex setStorageMode:MTLStorageModeShared];
texOutRGB = [_device newTextureWithDescriptor:descTex];
Использовал вычислительный шейдер, чтобы заполнить текстуру и отобразить ее на экране. Результаты ожидаемые.
Теперь мне нужно сделать хук процессора, чтобы изменить данные текстуры, что нельзя сделать с помощью шейдера. Я ожидал, что содержимое MTLTexture.buffer позволит мне зацикливаться на пикселях, но, похоже, это так не работает. Я вижу людей, использующих getBytes и затем replaceRegion, чтобы записать его обратно, но это не похоже на использование разделяемой памяти, поскольку создается копия данных.
Как зациклить данные пикселей RGBA в текстуре с помощью процессора?