Quartz Core,Core Graphics和Quartz 2D有什么区别?

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

在看文档时,我看到Quartz Core只列出了所有的Core Animation。 那么Quartz Core ==核心animation?

从Quartz 2D编程指南 :

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

即使这在技术上不正确,我也有在使用Quartz和Core Graphics时可以互换使用Mac / iPhone的二维绘图的趋势。

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

Quartz 2D是实现绘图的Core Graphics框架的API。
Quartz Core是一个包含animation和image processingAPI的框架。


Quartz框架及其API

CoreGraphics.framework

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

QuartzCore.framework

  • 核心animation :Objective-C API来做2Danimation。
  • 核心图像 :图像和video处理(滤镜,扭曲,转换)。 iOS 5

Quartz.framework OS X

  • 图像工具包 :显示和编辑图像。
  • PDF工具包 :显示和编辑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中创build窗口缓冲区,只使用OpenGL作为纹理进行上传(默认),或者使用OpenGL进行整个渲染,这并不总是提高性能 。 您可以使用QuartzGLEnable Info.plist设置在两者之间进行切换 。 有关解释,请参阅John Siracusa对Mac OS X 10.4 Tiger的评论,第13和14页。

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

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