我有一个只能由GPU访问的3D纹理,我试图在帧的开头清除它。我已经尝试使用计算机着色器将每个元素设置为零,但是对于64x64x64纹理,这需要花费近3毫秒,而且我想使用比这更大的东西。
如果我可以做一些类似于颜色附件的明载操作,那将会很棒,但我不认为在这种情况下这是可能的。
清除纹理的最快方法是什么?
答案 0 :(得分:5)
最简单的方法是使用renderPassDesciptor的loadActions,如下所示:
MTLRenderPassDescriptor *rpdesc = [MTLRenderPassDescriptor renderPassDescriptor];
rpdesc.colorAttachments[0].clearColor = MTLClearColorMake(0,0,0,0);
rpdesc.colorAttachments[0].loadAction = MTLLoadActionClear;