2011-02-13 67 views
1

我正在试图调整一个游戏的过程,它使用Quartz在每个游戏循环(40 fps)期间绘制中等数量的精灵,大约50。我有一个非常简单的绘图机制,其中单个游戏视图(UIView)遍历所有活动精灵并要求每个精灵将其自身呈现为CGContext(视图的视图)。这工作正常,但性能开始下降超过50个活动对象,我很想调整的东西。缓存石英渲染绘图到CALayer

我决定为每个精灵拿着一个CALayer,它的缓存绘图是要走的路 - 然后使用Core Animation渲染/旋转/缩放绘图。

我很努力去理解我是如何实现这一点的。我最初是在哪里画的?当我的精灵初始化时,我没有CGContext。将CGImage渲染为缓冲区然后将其设置为CALayer上的内容是正确的方法吗?

回答

1

只是子类CALayer并在drawInContext:做你的绘图。该图层将自动缓存其内容。如果您不想子类CALayer,您也可以为其分配一个代理人(该代理人不得为UIView)并执行drawLayer:inContext:

+0

感谢您的回复。 – mmccomb 2011-02-13 16:11:38