gpt4 book ai didi

ios - Metal 最佳实践 : Triple-buffering – Textures too?

转载 作者:可可西里 更新时间:2023-11-01 05:40:00 26 4
gpt4 key购买 nike

Metal Best Practices Guide ,它指出,为了获得最佳性能,应该“实现三重缓冲模型来更新动态缓冲区数据”,并且“动态缓冲区数据是指存储在缓冲区中的频繁更新的数据。”

如果 MTLTexture 需要每帧更新,它是否符合“存储在缓冲区中的频繁更新数据”的条件?上面指南中的所有示例都集中在 MTLBuffer 上。

我注意到 Apple 在 MetalKit 中的实现有一个 nextDrawable 的概念,所以也许这就是这里发生的事情?

最佳答案

如果一个命令可能正在运行并且它可以访问(读取/采样/写入)纹理,而您正在 CPU 上修改相同的纹理(例如,使用 -replaceRegion:... 方法或写入支持 IOSurface),那么您将需要一种多缓冲技术,是的。

如果您只是在 GPU 上修改纹理(通过渲染,从着色器函数写入,或使用 blit 命令编码器方法复制到它),那么您不需要多缓冲。您可能需要在着色器函数中使用纹理栅栏,或者您可能需要在绘制调用之间的渲染命令编码器上调用 -textureBarrier,具体取决于您在做什么。

是的,nextDrawable 提供了一种多缓冲形式。不过,在这种情况下,这不是由于 CPU 访问。您将渲染到一个纹理,而先前渲染的纹理可能仍在前往屏幕的途中。您不想对两者使用相同的纹理,因为新渲染可能会在将纹理放在屏幕上之前 overdraw 纹理,从而显示损坏的结果。

关于ios - Metal 最佳实践 : Triple-buffering – Textures too?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46758764/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com