Iphone 将石英渲染图形缓存到CALayer

Iphone 将石英渲染图形缓存到CALayer,iphone,core-animation,core-graphics,Iphone,Core Animation,Core Graphics,我正在尝试调整一个游戏的过程,它使用石英在每个游戏循环(40 fps)中绘制中等数量的精灵,大约50个 目前,我有一个非常简单的绘图机制,其中一个游戏视图(UIView)迭代所有活动的精灵,并要求每个精灵将自己渲染到CGContext(视图的上下文)。这很好,但性能开始下降,超过50个活动对象,我很想调整的东西 我已经决定为缓存的图形中的每个精灵保留一个CALayer,然后使用核心动画渲染/旋转/缩放图形 我正在努力理解我是如何做到这一点的。我最初到底画到哪里?我的精灵初始化时没有CGConte

我正在尝试调整一个游戏的过程,它使用石英在每个游戏循环(40 fps)中绘制中等数量的精灵,大约50个

目前,我有一个非常简单的绘图机制,其中一个游戏视图(UIView)迭代所有活动的精灵,并要求每个精灵将自己渲染到CGContext(视图的上下文)。这很好,但性能开始下降,超过50个活动对象,我很想调整的东西

我已经决定为缓存的图形中的每个精灵保留一个CALayer,然后使用核心动画渲染/旋转/缩放图形


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

只需子类
CALayer
,然后在
DrawInText:
中进行绘图。然后图层将自动缓存其内容。如果您不想为
CALayer
创建子类,还可以为其指定一个委托(该委托不能是
UIView
),并实现
drawLayer:inContext:
只需创建子类
CALayer
,然后在
drawInContext:
中进行绘图。然后图层将自动缓存其内容。如果您不想将
CALayer
分为子类,还可以为其分配一个委托(该委托不能是
UIView
),并实现
drawLayer:inContext:

我已经将更通用的游戏对象类型分为子类,因此我倾向于分配一个委托。我可以给我的游戏对象一个CALayer属性和一个drawLayer:inContext方法,然后将其CALayer设置为作为代理指向游戏对象本身,这对吗?在实现方面,我会在drawLayer:inContext中做什么来呈现精灵的缓存副本?我已经在对我更通用的游戏对象类型进行子类化,所以我倾向于分配一个代理。我可以给我的游戏对象一个CALayer属性和一个drawLayer:inContext方法,然后将其CALayer设置为作为代理指向游戏对象本身,这对吗?在实现方面,我将在drawLayer:inContext中做什么来呈现精灵的缓存副本?