Ios 如何使用金属清除GPU纹理?

Ios 如何使用金属清除GPU纹理?,ios,textures,metal,Ios,Textures,Metal,我有一个只有GPU才能访问的3D纹理,我正试图在一帧开始时清除它。我曾尝试使用计算机着色器将每个元素设置为零,但对于64x64x64纹理,这需要将近3毫秒的时间,我想使用比这更大的时间 如果我能为颜色附件做一些像“加载时清除”这样的操作,那将是非常棒的,但我认为在这种情况下不可能做到 清除纹理的最快方法是什么?最简单的方法是使用RenderPassDescriptor的loadActions,如下所示: MTLRenderPassDescriptor *rpdesc = [MTLRenderPa

我有一个只有GPU才能访问的3D纹理,我正试图在一帧开始时清除它。我曾尝试使用计算机着色器将每个元素设置为零,但对于64x64x64纹理,这需要将近3毫秒的时间,我想使用比这更大的时间

如果我能为颜色附件做一些像“加载时清除”这样的操作,那将是非常棒的,但我认为在这种情况下不可能做到


清除纹理的最快方法是什么?

最简单的方法是使用RenderPassDescriptor的loadActions,如下所示:

MTLRenderPassDescriptor *rpdesc = [MTLRenderPassDescriptor renderPassDescriptor];
rpdesc.colorAttachments[0].clearColor = MTLClearColorMake(0,0,0,0);
rpdesc.colorAttachments[0].loadAction = MTLLoadActionClear;

您的计算着色器看起来像什么?假设您正在创建尽可能大的线程组大小(通常为512或1024),并启动足够的线程组以完全填充GPU?