提高iPhone 4的核心图形性能

时间:2010-11-20 14:48:59

标签: iphone

我正在合成两个(静态)图像,每秒几次。这段代码在3G上运行起来非常不稳定,而且在iPhone4上运行起来非常慢。 TimeProfiler显示对UIImage drawAtPoint的调用最终会调用一些非常昂贵的东西,称为“argb_sample_RGBA21”。从未在3G上调用此例程。我是否可以对静态图像执行一次字节顺序转换,从而节省了这种字节顺序转换?

+ (UIImage * ) createInterpolatedImageBetween: (UIImage *) imageA
                                     andImage:  (UIImage *) imageB
                                     forValue: (float) fractionalValue {

      UIGraphicsBeginImageContextWithOptions(CGSizeMake(imageA.size.width, imageA.size.height), YES, 0.0); 

      [imageA drawAtPoint: CGPointMake(0,0)];

      [imageB drawAtPoint: CGPointMake(0,0) 
                blendMode: kCGBlendModeNormal 
                    alpha: fractionalValue];


      UIImage *answer = UIGraphicsGetImageFromCurrentImageContext(); 
      UIGraphicsEndImageContext();
      return answer;

}

1 个答案:

答案 0 :(得分:0)

Core Graphics本质上很慢,因为它只在CPU上运行而不利用图形硬件。使用CISourceOverCompositing可选地与同一页面中的CICategoryCompositeOperation结合使用可以显着提升性能,但前提是您的目标是iOS 5或更高版本。

这是一个很好的核心形象介绍: http://www.raywenderlich.com/5689/beginning-core-image-in-ios-5