苹果手机。粒子系统性能

时间:2010-03-29 13:38:55

标签: iphone opengl-es core-animation particles

我尝试使用核心图形将雨雪作为粒子系统。 在模拟器渲染中进展顺利,但是当我在真实设备上运行我的应用程序渲染速度变慢时。

所以,请告诉我在iPhone上增加粒子系统绘图性能的方法

可能我应该使用 OpenGL CoreAnimation

3 个答案:

答案 0 :(得分:2)

OpenGL将是渲染的最低级别,因此应该提供最佳性能(如果正确的话)。如果没有太多的粒子,CoreAnimation就足够接近(确切的数字取决于其他因素,但最多约50个应该没问题)。 当你说你现在正在使用CoreGraphics时,你的意思是你是基于计时器进行重绘吗?如果是这样,那么CoreAnimation肯定会帮助你 - 只要你可以将每个粒子分离到一个视图中。您仍然可以使用CoreGraphics渲染单个粒子。

您是否使用物理引擎来计算位置?

答案 1 :(得分:2)

如果您只是使用Core Graphics绘制视图,然后每帧重新绘制以反映粒子的移动,您将看到糟糕的性能(更多信息,请参阅this answer)。您将需要转到OpenGL ES或Core Animation来获取粒子系统动画。

我的建议是查看CAReplicatorLayer,这是iPhone OS 3.0和Snow Leopard中添加的新Core Animation图层类型。我已经看到一些令人印象深刻的粒子系统只使用这一层类型创建,而不使用太多代码。请参阅ReplicatorDemo示例应用程序(适用于Mac,但核心概念相同)或Joe Ricioppo的"To 1e100f And Beyond with CAReplicatorLayer"文章。

答案 2 :(得分:1)

很难提供有关您的实施信息的建议。根据我的经验,iPhone上的一个主要瓶颈是内存分配。因此,如果您为每个生成的粒子分配新对象,那么您可能首先需要修复它。 (分配一个对象池并重用它们。)