我想实现一个实时性能视图来显示核心图像过滤器输出。形成Apple的文档,似乎我应该使用基于GPU的上下文进行绘图。
有些术语我很困惑。 EAGLContext
,CIContext
,GLKView
。这些是什么东西?另外,我应该使用EAGLContext
从CGImage
创建CIImage
并将其设置为UIImageView
或使用GLKView
。这两种方法有什么不同?
答案 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回购。
西蒙