我正在尝试将CIFilters
应用于CIImage
序列,并希望实时显示它们(至少20-30 fps)。
通过EAGL支持的GLKView
在CIContext
上绘制图像
当使用此代码(在更新方法中)绘制图像时,我得到±20 fps(已经有点紧):
image = [image imageByApplyingTransform: CGAffineTransformMakeScale(@scale, @scale)];
[self.capture_controller.core_image_context drawImage:image atPoint: [0, 0] fromRect: image.extent];
如果我只添加一个简单的过滤器,使其降至10-12 fps(
compo
是CISourceOverCompositing
过滤器,则对inputImage全部设置一次):[self.compo setValue:image forKey: @"inputBackgroundImage"];
image = [self.compo outputImage];
有什么办法可以从CoreImage获得更好的性能吗?我认为UIImageView可以更快地显示序列,因此应该可以。
最佳答案
有关如何获得性能的信息,请参阅CoreImage上的WWDC 2012视频。默认情况下,性能受颜色管理等因素限制。为了获得最佳性能,请在创建CIContext时关闭颜色管理,仅创建一次上下文,然后仅创建过滤器一次。