我有一个3D纹理,只有GPU可以访问它,我正在尝试在帧开始时清除它。我曾尝试使用计算机着色器将每个元素设置为零,但是对于64x64x64纹理,这花费了将近3毫秒,我想使用比这更大的东西。
如果我可以对颜色附件执行类似“加载时清除”操作的功能,那将是很好的选择,但我认为在这种情况下这是不可能的。
清除纹理的最快方法是什么?
最简单的方法是使用renderPassDesciptor的loadActions,如下所示:
MTLRenderPassDescriptor *rpdesc = [MTLRenderPassDescriptor renderPassDescriptor]; rpdesc.colorAttachments[0].clearColor = MTLClearColorMake(0,0,0,0); rpdesc.colorAttachments[0].loadAction = MTLLoadActionClear;