CoreImage,iOS5和速度,为什么CoreImage这么慢?

时间:2011-12-10 21:47:07

标签: iphone ios ios5 core-graphics core-image

我终于坐下来转换我们的一些图形库来使用CoreImage来渲染图像(比如混合两个图像)并且我已经让它工作但速度很慢(iOS5.01 iPhone 4S)。我认为CoreImage的承诺是硬件加速,这就是我正在做的事情:

        CIImage *intputBackgroundImage = [[CIImage alloc] initWithCGImage:backgroundImageRef];
    CIImage *inputImage = [[CIImage alloc] initWithCGImage:inputImageRef];

    CIFilter *multiply = [CIFilter filterWithName:@"CIMultiplyBlendMode"];
    [multiply setDefaults];

    [multiply setValue:intputBackgroundImage forKey:@"inputBackgroundImage"];
    [multiply setValue:inputImage forKey:@"inputImage"];

    CIImage *result = multiply.outputImage;
    CIContext *ctx = [CIContext contextWithOptions:nil];

    CGImageRef resultRef = [ctx createCGImage:result fromRect:CGRectMake(0, 0, imgFrame.size.width, imgFrame.size.height)];
    UIImage *resultImage = [UIImage imageWithCGImage:resultRef];
    CGImageRelease(resultRef);

它有效,我得到一个将inputImage混合到backgroundImage中的图像,但实际上需要的时间比使用CoreGraphics和CGContext()完成的时间要长。有没有办法检查这项工作是否没有在GPU上完成,是否有理由不存在?

谢谢,

1 个答案:

答案 0 :(得分:1)

您需要重新呈现的内容最适合ci或需要执行多个过滤器的内容。

它目前较慢,因为必须将项目从cpu内存复制到gpu内存(在ios上没有opengl统一内存支持)。

这意味着由于您只做一种效果,因此双重复制需要更多时间。