2

我对不同类型的视图/上下文/渲染后端的了解越多,我就越感到困惑。

关于http://en.wikipedia.org/wiki/Quartz_%28graphics_layer%29 MacOSX 提供 Quartz (Extreme) 作为渲染后端,它本身就是 Core Graphics 的一部分。在 Apple 文档和一些书籍中,他们也说无论如何你都使用 OpenGL(显然因为这个操作系统使用 OpenGL 来渲染它的所有 UI)。

我目前有一个应用程序应该从相机捕获实时视频(通过基于 Quicktime 但是 Cocoa 的 QTKit),我想进一步处理帧(通过 Core Image、GLSL 着色器等)。

到目前为止,一切都很好。现在我的问题是 - 如果你在性能方面重要吗

  • a) 通过 Quartz 并通过 OpenGL 隐式绘制捕获的帧或
  • b) 如果您设置 OpenGL 上下文和 DisplayLink 并通过 OpenGL 显式绘制缓冲图像?

无论哪种方式都有什么优点或缺点?

我查看了来自苹果开发者页面的不同示例(尤其是 CoreImage101 和 CoreVideo101)和文档,但我不明白为什么他们会(或必须)那样做?!?

我真的不明白核心视频和核心动画在哪里发挥作用?b) 是否自动意味着我使用核心视频?我可以通过哪种方式使用核心动画?

附加信息:

ps:顺便说一句,我在 Leopard 上,所以还没有 QuicktimeX 混乱 :)

4

1 回答 1

2

一般来说,OpenGL 比更高级别的 API 更灵活。如果更高级别的 API 不提供您需要的功能,那么您很可能需要下拉到 OpenGL 层。

如果他们确实提供了您需要的一切,那么您应该具有相当的速度。考虑到 Objective-C 的开销,可能会有一个小的(几乎可以忽略不计)降级。

于 2010-01-22T17:02:25.410 回答