2

我尝试使用Core Graphics将雨雪绘制为粒子系统。在模拟器中渲染进行得很好,但是当我在真实设备上运行我的应用程序时,渲染速度变慢了。

所以,请告诉我提高iPhone 上粒子系统绘图性能的方法。

可能我应该为此使用OpenGL还是CoreAnimation

4

3 回答 3

2

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

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

于 2010-03-29T13:46:01.737 回答
2

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

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

于 2010-03-29T15:37:42.020 回答
1

在几乎没有关于您的实施的信息的情况下,很难给出建议。根据我的经验,iPhone 的主要瓶颈之一是内存分配。因此,如果您为每个生成的粒子分配新对象,那将是您可能要修复的第一件事。(分配对象池并重用它们。)

于 2010-03-29T13:44:05.873 回答