我正在尝试调整游戏过程,在每个游戏循环(40 fps)期间使用Quartz绘制大约50个精灵的数量。
目前我有一个非常简单的绘图机制,其中单个游戏视图(UIView)遍历所有活动精灵并要求每个精灵将其自身呈现为CGContext(视图的那个)。这很好,但是性能开始下降超过50个活动对象,我很想调整一些东西。
我已经决定为每个精灵拿着一个CALayer,它的缓存绘图是可行的 - 然后使用Core Animation渲染/旋转/缩放绘图。
我很难理解我是如何做到这一点的。我最初在哪里吸引?我的精灵初始化时没有CGContext。将CGImage渲染为缓冲区然后将其设置为CALayer上的内容是正确的方法吗?
答案 0 :(得分:1)
只需子类CALayer
并在drawInContext:
中进行绘制。然后,该层将自动缓存其内容。如果您不想继承CALayer
,则还可以为其分配一个委托(不能是UIView
)并实施drawLayer:inContext:
。