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

时间:2009-12-10 00:54:32

标签: iphone core-graphics quartz-graphics quartz-2d

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

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

3 个答案:

答案 0 :(得分:88)

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


Quartz框架及其API

CoreGraphics.framework

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

QuartzCore.framework

  • Core Animation:用于进行2D动画的Objective-C API。
  • Core Image:图像和视频处理(过滤器,扭曲,过渡)。 iOS 5

Quartz.framework 仅限OS X

  • Image Kit:显示和编辑图片。
  • PDF Kit:显示和编辑PDF。
  • Quartz Composer:显示Quartz Composer合成。
  • QuickLookUI:预览媒体元素。

所有三个框架都在下面使用OpenGL,因为iOS或OS X中的所有绘图都会在某些时候通过OpenGL。有关详细信息,请参阅Mac OS X技术概述的Media Layer Frameworks部分。

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

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

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

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

答案 1 :(得分:37)

来自Quartz 2D Programming Guide

  

Quartz 2D API是Core的一部分   图形框架,所以你可能会看到   Quartz称为核心图形   或者,简单地说,CG。

在Mac / iPhone上引用二维绘图时,我倾向于互换使用Quartz和Core Graphics,即使这在技术上并不正确。

Quartz Core framework on the iPhone包含Core Animation的类和支持元素,还包含用于Core Image的项目。

答案 2 :(得分:6)

但是请注意,新的单一视图应用程序默认情况下会链接CoreGraphics框架,而不是QuartzCore。因此,如果您使用CAEAGLLayer执行任何操作,可能会很快收到“未知对象”错误。