如何实现核心图像过滤器的实时性能视图

时间:2016-02-18 02:24:30

标签: ios core-image cifilter glkview

我想实现一个实时性能视图来显示核心图像过滤器输出。形成Apple的文档,似乎我应该使用基于GPU的上下文进行绘图。

有些术语我很困惑。 EAGLContextCIContextGLKView。这些是什么东西?另外,我应该使用EAGLContextCGImage创建CIImage并将其设置为UIImageView或使用GLKView。这两种方法有什么不同?

1 个答案:

答案 0 :(得分:0)

您可以通过避免public并使用OpenGL视图UIImageView将图像保留在GPU上。要使用CoreImage,您需要创建一个带有EAGL上下文的GLKView

CIContext

let eaglContext = EAGLContext(API: .OpenGLES2) lazy var ciContext: CIContext = { [unowned self] in return CIContext(EAGLContext: self.eaglContext, options: [kCIContextWorkingColorSpace: NSNull()]) }() 的上下文应该相同GLKView,还需要符合eaglContext的委托。

要显示图像,请使用GLKViewDelegate使显示无效。这将在代理上调用setNeedsDisplay(),在此处您使用核心图像上下文将图像绘制到glkView(:drawInRect:)

GLKView

ciContext.drawImage(image, inRect: targetRect, fromRect: image.extent) 是要显示的image

如果所有这些都听起来太费劲,我已经为您完成了工作,请查看我的CoreImageHelpers回购。

西蒙