小编kar*_*rel的帖子

如何通过 Metal 在 iOS 上使用 GPU 和 CPU 之间的共享内存?(理想情况下目标c)

我创建了一个像这样的 MTLTexture:

descTex=[MTLTextureDescriptor texture2DDescriptorWithPixelFormat:MTLPixelFormatRGBA8Unorm width:texCamWidth height:texCamHeight mipmapped:NO];
descTex.usage = MTLTextureUsageShaderWrite | MTLTextureUsageShaderRead ;
[descTex setStorageMode:MTLStorageModeShared];
texOutRGB = [_device newTextureWithDescriptor:descTex];
Run Code Online (Sandbox Code Playgroud)

使用计算着色器填充纹理并将其渲染到屏幕上。结果符合预期。现在我需要做一个CPU钩子来修改纹理数据,这是用着色器无法完成的。我预计 MTLTexture.buffer 内容将允许我循环像素,但它似乎不能那样工作。我看到人们使用 getBytes 然后replaceRegion 将其写回,但这看起来不像使用共享内存,因为创建了数据副本。如何用CPU循环遍历纹理中的RGBA像素数据?

ios metal

5
推荐指数
1
解决办法
1266
查看次数

标签 统计

ios ×1

metal ×1