我正在研究一个具有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中绘制圆圈?
答案 0 :(得分:2)
您可以尝试两种不同的方法来帮助加快效果......
Quartz通常比OpenGL慢,特别是对于我在iPhone上进行的所有研究的基于路径的绘图。请参阅IPhone Dev论坛,您将看到对此的普遍共识。
答案 1 :(得分:1)
为每个粒子制作一个图层(CALayer)实际上可能有意义。一般来说,在-drawRect中绘制“你自己”是iOS上的慢速路径。如果可能的话,尽量避免使用它。