我并不真正了解 CI 库,对于从未使用过图形或图像处理的人来说,只有 Apple 文档中的功能描述是不够的。
我需要能够处理每一帧(来自相机),并根据处理后的帧在每个帧上放置一个带有变换箭头的叠加层。因此,每次都从过滤器制作 CGImage 而不是直接绘制 CIImage,这似乎是一种资源浪费,在 iPhone 4S 上我真的需要更多的性能。
因此,在我使用 [context drawImage] 直接绘制 CIImage 的试验中,得到了以下结果
1)我试图在一个简单的 UIView 中绘制上下文,如下所示
[context drawImage:arrow inRect:overlayView.frame fromRect:arrow.extent];
箭头是来自 CIFilter 的有效 CIImage。这是有效的,因为如果我将其转换为 CGImage,它会被投影。
上下文如下所示:
eaglContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
[EAGLContext setCurrentContext:eaglContext];
glkView.context = eaglContext;
glkView.delegate = self;
NSDictionary *options = @{kCIContextWorkingColorSpace : [NSNull null]};
context = [CIContext contextWithEAGLContext:eaglContext options:options];
overlayView 已连接,并且 evr 没问题。
2)之后,我尝试使用 GLKView,在 ViewController 上设置委托
- 矩形中的平局被调用
- 我可以用一些基本的opengl代码修改glkview颜色
*!!但它从不绘制我的 CIImage,即使它是一个大小可以轻松转换为 CGImage 的有效图像
绘图的代码(glkView内部:drawInRect)是一样的
[context drawImage:arrow inRect:glkView.frame fromRect:arrow.extent];
一些建议?