如何在CPU上一起运行Core Animation和Core Image?

Apple的核心图像编程指南,在“ 获得最佳性能 ”部分中说

在使用GPU上下文渲染CIImage对象时,请避免使用Core Animation动画。

如果您需要同时使用两者,则可以将两者都设置为使用CPU。

有谁能解释这个说法? 为什么在CPU上运行Core Animation和Core Image而不是使用GPU会更高效?

如何设置Core Animation在CPU上运行?

我有同样的问题,并遇到了这个WWDC 2013会议509评论, http : //asciiwwdc.com/2013/sessions/509 :

“还要注意Core Animation和Core Image都广泛使用GPU。

因此,如果您希望Core Animations顺畅,您可能要错开Core Image操作或使用CPU CIContext,这样他们就不会同时对GPU施加压力。“

我猜他们在GPU上不能同时工作,因为它们在GPU上渲染时都在主线程上运行,这会导致不可预测的问题和性能开销,因为他们为什么要使用CPU,应该保持“同时”。

由于核心图形绘制在CPU上,您可以在drawRect中绘制动画并定期调用setNeesDisplay以在CPU上执行动画。