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

时间:2015-12-21 22:48:36

标签: ios textures metal

我有一个只能由GPU访问的3D纹理,我试图在帧的开头清除它。我已经尝试使用计算机着色器将每个元素设置为零,但是对于64x64x64纹理,这需要花费近3毫秒,而且我想使用比这更大的东西。

如果我可以做一些类似于颜色附件的明载操作,那将会很棒,但我不认为在这种情况下这是可能的。

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

1 个答案:

答案 0 :(得分:5)

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

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