一般iOS图形效率

时间:2011-07-02 05:38:38

标签: cocoa-touch performance ipad graphics

我正在研究一个具有500个“粒子”的简单程序,它具有x和y坐标。他们在屏幕上移动并响应触摸。当我超过500粒子时,应用程序开始运行得慢得多。使用CPU采样器我发现绘制粒子占用的CPU时间最多。

这是绘图代码:

CGContextSetFillColorWithColor(context, [UIColor colorWithRed:red/255 green:green/255 blue:blue/255 alpha:1].CGColor);
CGRect rectangle = CGRectMake(xpos,ypos,9,9);
CGContextAddEllipseInRect(context, rectangle);
CGContextFillPath(context);

红色,绿色和蓝色是用于根据速度改变粒子颜色的浮子,但这不是问题。

这就是我被教导使用Quartz的方法,它适用于大多数绘图,但是这段代码执行了500多次,游戏开始变慢。我已经使用CPU采样器运行程序,并且绘图代码被注释掉,尽管所有数学运算都在后台进行,但几乎没有任何CPU使用率。

是否有更有效的方法在iOS中绘制圆圈?

2 个答案:

答案 0 :(得分:2)

您可以尝试两种不同的方法来帮助加快效果......

  • 使用预渲染的UIImage / CGImage代替点(不会让你动态地改变颜色/大小,但也许你只需要一个有限的应用程序范围)。
  • 使用OpenGL,GL_POINTS

Quartz通常比OpenGL慢,特别是对于我在iPhone上进行的所有研究的基于路径的绘图。请参阅IPhone Dev论坛,您将看到对此的普遍共识。

答案 1 :(得分:1)

为每个粒子制作一个图层(CALayer)实际上可能有意义。一般来说,在-drawRect中绘制“你自己”是iOS上的慢速路径。如果可能的话,尽量避免使用它。