一个CGImageRef用于多个CALayers

时间:2012-11-13 16:04:28

标签: core-animation calayer

我最近用不同的技术在iOS上绘制2D精灵(CoreAnimation,UIViews,CGContext和Open GL ES)进行了大量实验。我从CoreAnimation获得的最佳性能与开发时间相比,所以我会坚持(暂时)。

要显示位图,我使用CALayers - 它工作得很好,并且比Open GL慢很多。 有多种模式经常重复(这对于平台游戏来说是典型的)。出于记忆的原因,我想为多个CALayer重复使用存储的图像。

我能这样做吗?怎么样?我想象的是:

  1. 以任何形式存储位图(UIImage?)在内存中
  2. 从UIImage获取CGImageRef
  3. 将CGImageRef应用于应显示该位图的每个CALayer
  4. 这实际上只将指针存储到每个图层的位图中,还是“Apple-magic”为每个CALayer创建位图的副本

    谢谢。

1 个答案:

答案 0 :(得分:0)

创建iOS项目进行测试后,我的结论是:

  • 您可以将内容(类型ID)设置为UIImage。期。因此imho是类型id是无用的:它应该是UIImage
  • 因此:您无法设置内容以键入CGImageRef(如果您使用__bridge id),内容为nil并且不会生成错误(与Apple文档相反,后者表示这适用于iOS基于MacOS X 10.6及更高版本在afaik)。

我发现无法使用RAM为每个使用CALayer的tilebitmap多次显示图块。你必须使用OpenGL ES才能做到这一点。