2

我并不真正了解 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];

一些建议?

4

0 回答 0