代码之家  ›  专栏  ›  技术社区  ›  Tricky

金属最佳实践:三重缓冲–纹理?

  •  4
  • Tricky  · 技术社区  · 7 年前

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

    是否执行 MTLTexture 如果需要每一帧更新一次,是否符合“存储在缓冲区中的频繁更新数据”的条件?上述指南中的所有示例都侧重于 MTLBuffer s

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

    1 回复  |  直到 7 年前
        1
  •  4
  •   Ken Thomases    7 年前

    -replaceRegion:... 方法或通过写入支持IOSurface),那么您将需要一种多缓冲技术,是的。

    -textureBarrier 在绘制调用之间的渲染命令编码器上,具体取决于您正在执行的操作。

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