【问题标题】:How do you clear a GPU texture using metal?如何使用金属清除 GPU 纹理?
【发布时间】:2015-12-21 22:48:36
【问题描述】:

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

如果我可以对颜色附件执行诸如清除加载操作之类的操作,那就太好了,但我认为在这种情况下这是不可能的。

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

【问题讨论】:

  • 您的计算着色器是什么样的?大概您正在创建尽可能大的线程组大小(通常为 512 或 1024),并启动足够多的线程组以完全填满 GPU?

标签: ios textures metal


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-01-08
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 2017-07-08
    相关资源
    最近更新 更多