75

我想知道是否有人可以准确地区分这些?据我了解,Core Graphics 只是一个包含 Quartz Core 和 Quartz 2D 的“框架包”。但我不确定 Quartz 2D 是否真的是 Quartz Core?也许有人可以在那里画一些线?是什么构成了它们之间的差异?

查看文档时,我看到 Quartz Core 仅列出了所有 Core Animation 内容。所以 Quartz Core == Core Animation?

4

3 回答 3

95

Quartz 2D 是实现绘图的 Core Graphics 框架的 API。
Quartz Core 是一个包含动画和图像处理 API 的框架。


Quartz 框架及其 API

CoreGraphics.framework

  • Quartz 2D API 管理图形上下文并实现绘图。
  • Quartz Services API 提供对窗口服务器的低级访问。这包括显示硬件、分辨率、刷新率等。

QuartzCore.framework

  • 核心动画:Objective-C API 做 2D 动画。
  • 核心图像:图像和视频处理(滤镜、扭曲、过渡)。iOS 5

Quartz.framework仅限 OS X

  • Image Kit:显示和编辑图像。
  • PDF Kit:显示和编辑 PDF。
  • Quartz Composer:显示 Quartz Composer 作品。
  • QuickLookUI:预览媒体元素。

这三个框架都在底层使用了 OpenGL,因为 iOS 或 OS X 中的所有绘图在某些时候都通过 OpenGL。有关详细信息,请参阅Mac OS X 技术概述的媒体层框架部分。

您可能听说过的其他“石英”技术:

  • Quartz Extreme:Quartz Composer 的 GPU 加速。
  • QuartzGL(又名“Quartz 2D Extreme”):Quartz 2D 的 GPU 加速。

这些是 GPU 渲染的内部实现,而不是 API。他们决定是在 CPU 中创建窗口缓冲区并仅使用 OpenGL 作为纹理上传(默认)还是使用 OpenGL 进行整个渲染,这并不总是能提高性能。您可以使用QuartzGLEnable Info.plist 设置在两者之间交替。有关解释,请参阅 John Siracusa 对 Mac OS X 10.4 Tiger 的评论,第1314页。

“Quartz”和“Core”是随机散布在框架和 API 上的营销名称。如果他们想制造混乱的命名混乱,他们成功了。

于 2012-03-26T00:58:18.900 回答
38

来自Quartz 2D 编程指南

Quartz 2D API 是 Core Graphics 框架的一部分,因此您可能会看到 Quartz 被称为 Core Graphics 或简称为 CG。

当提到 Mac / iPhone 上的 2-D 绘图时,我倾向于交替使用 Quartz 和 Core Graphics,即使这在技术上并不正确。

iPhone 上的Quartz Core 框架包含 Core Animation 的类和支持元素,还包含用于 Core Image 的项目。

于 2009-12-10T19:31:14.637 回答
6

但是要小心,一个新的单视图应用程序会默认链接 CoreGraphics 框架,而不是 QuartzCore。CAEAGLLayer因此,例如,如果您正在做任何事情,您可能会很快收到“未知对象”错误。

于 2012-04-04T09:15:31.683 回答