【发布时间】:2023-02-25 04:38:15
【问题描述】:
MetalKit 调用drawInMTKView 时它希望您的委托人绘制一个新框架,但我想知道它是否等待最后一个可绘制对象在它要求您的委托人绘制新框架之前呈现?
据我阅读 this article 的理解,CoreAnimation 最多可以提供三个“飞行中”可绘制对象,但我无法确定 MetalKit 是否会尽快尝试绘制它们,或者是否等待别的东西即将发生。
这会是什么别的东西?让我有点困惑的是提前绘制最多两帧的想法,因为这意味着 CPU 必须已经知道它想要在未来两帧渲染什么,我觉得情况并非总是如此。例如,如果您的应用程序依赖于用户输入,您无法预先知道从现在到您正在绘制的两个框架将被呈现之间用户将执行的操作,因此它们可能会呈现过时的内容。这个假设对吗?在这种情况下,仅以预期帧速率确定的最大速率调用委托方法可能是有意义的。
与帧速率同步的问题在于,这意味着 CPU 有时可能会在本可以完成一些有用的工作时处于非活动状态。
我也有直觉,这可能不会以这种方式发生,因为在上述文章中,drawInMTKView 似乎在 drawable 可用时被调用,因为他们似乎依赖它被调用来完成使用资源的工作一种避免 CPU 停顿的方法,但是由于有很多点我不清楚,所以我不确定到底发生了什么。
【问题讨论】:
标签: ios swift core-animation metal metalkit