我尝试使用Core Graphics将雨雪绘制为粒子系统。在模拟器中渲染进行得很好,但是当我在真实设备上运行我的应用程序时,渲染速度变慢了。
所以,请告诉我提高iPhone 上粒子系统绘图性能的方法。
可能我应该为此使用OpenGL还是CoreAnimation?
我尝试使用Core Graphics将雨雪绘制为粒子系统。在模拟器中渲染进行得很好,但是当我在真实设备上运行我的应用程序时,渲染速度变慢了。
所以,请告诉我提高iPhone 上粒子系统绘图性能的方法。
可能我应该为此使用OpenGL还是CoreAnimation?
OpenGL 将是渲染的最低级别,因此应该提供最佳性能(如果操作正确)。如果没有太多粒子,CoreAnimation 将足够接近(确切的数字取决于其他因素,但最多 50 个应该是可以的)。当您说您目前正在使用 CoreGraphics 时,您的意思是您正在根据计时器重绘吗?如果是这样,那么 CoreAnimation 肯定会帮助您 - 只要您可以将每个粒子分离到一个视图中。您仍然可以使用 CoreGraphics 来渲染单个粒子。
您是否使用物理引擎来计算位置?
如果您只是使用 Core Graphics 绘制视图,然后每帧重新绘制它以反映粒子的运动,您将看到糟糕的性能(更多信息,请参阅此答案)。您将需要转到 OpenGL ES 或 Core Animation 以获得粒子系统动画。
我的建议是查看CAReplicatorLayer,这是 iPhone OS 3.0 和 Snow Leopard 中添加的一种新的核心动画层类型。我已经看到了一些令人印象深刻的粒子系统,它们仅使用这一层类型创建,而无需使用太多代码。请参阅ReplicatorDemo示例应用程序(适用于 Mac,但核心概念相同),或 Joe Ricioppo 的“To 1e100f And Beyond with CAReplicatorLayer”一文。
在几乎没有关于您的实施的信息的情况下,很难给出建议。根据我的经验,iPhone 的主要瓶颈之一是内存分配。因此,如果您为每个生成的粒子分配新对象,那将是您可能要修复的第一件事。(分配对象池并重用它们。)