UIGraphics ImageContext的性能问题

时间:2013-12-26 15:14:15

标签: ipad ios7 sprite-kit uigraphicscontext

我使用Sprite Kit在iPad上编写了一个简单的2D动画应用程序。此应用程序唯一困难的部分是使用计算的多边形(阴影)剪切图像(.png)。经过调查,在我看来,实现这一目标的唯一方法是使用UIImage和UIBezier路径(注意:我的路径不需要Bezier路径的全部功能,简单的CGPath将适用于我的情况。)。我写了以下方法来完成这个剪辑:

- (UIImage *) maskImage: (UIImage *)originalImage toPath: (UIBezierPath *)path
{
    UIGraphicsBeginImageContextWithOptions (originalImage.size, NO, 0.0f);
    [path addClip];
    [originalImage drawAtPoint: CGPointZero];
    UIImage *maskedImage = UIGraphicsGetImageFromCurrentImageContext ();
    UIGraphicsEndImageContext ();
    return maskedImage;
}

此操作的结果最终传递给:

SKSpriteNode *node = [SKSpriteNode spriteNodeWithTexture: [SKTexture textureWithImage: [self buildShadowMask]]];

当使用iOS模拟器执行此代码时,它实际上非常快速地实时运行。但是,当我在真正的iPad(iPad Air或iPad 4G)上运行时,它的运行速度非常慢。所以,我的问题是:为什么在实际的iPad设备上剪切图像的方法如此之慢?无论如何剪辑图像(使用简单的路径)会更快?这是UIGraphicsContext或Sprite或两者的问题吗?我非常感谢任何人可以给我的任何建议或指导。非常感谢!

0 个答案:

没有答案