所以我正在创造一个应该拥有动态生成的珊瑚礁的游戏。珊瑚礁有几个包含我试图展示的图像(100x100)的物体。我可以显示图像但CPU使用率很高。问题出在我的绘图代码中我相信:
-(void)drawCoralWithContext:(CGContextRef)ctx{
for(Coral *c in coral){
CGRect coralRect = CGRectMake (0, 0, [c size], [c size]);
CGLayerRef layerRef = CGLayerCreateWithContext(ctx, CGSizeMake([c size], [c size]), NULL);
CGContextRef layerCtx = CGLayerGetContext(layerRef);
coralRect = CGRectMake (0, 0, [c size], [c size]);
layerRef = CGLayerCreateWithContext(ctx, CGSizeMake([c size], [c size]), NULL);
layerCtx = CGLayerGetContext(layerRef);
CGContextDrawImage(layerCtx, coralRect, [c image]);
CGContextSaveGState(ctx);
CGContextTranslateCTM(ctx, c.position.x, c.position.y);
CGContextDrawLayerAtPoint(ctx, [c position], layerRef);
CGContextRestoreGState(ctx);
CFRelease(layerRef);
}
}
传递的上下文:
CGContextRef ctx = UIGraphicsGetCurrentContext();
我需要减少处理量。非常感谢任何帮助,谢谢。
答案 0 :(得分:1)
你看过CATiledLayer了吗?它的文档不是很好,但是为绘制一个充满许多小图像的屏幕提供了很多性能提升。有一些来自旧WWDC的示例代码,您可能想查看本教程http://www.cimgf.com/2011/03/01/subduing-catiledlayer/