我想知道是否有人可以准确区分这些? 据我所知,Core Graphics只是一个包含Quartz Core和Quartz 2D的“Framework Package”。但我不确定Quartz 2D是否真的是Quartz Core?也许有人可以在那里画一些线?是什么构成了这些差异?
在查看文档时,我看到Quartz Core仅列出了所有Core Animation的内容。那么Quartz Core == Core Animation?
答案 0 :(得分:88)
Quartz 2D是实现绘图的Core Graphics框架的API Quartz Core是一个包含用于动画和图像处理的API的框架。
CoreGraphics.framework
QuartzCore.framework
Quartz.framework
仅限OS X
所有三个框架都在下面使用OpenGL,因为iOS或OS X中的所有绘图都会在某些时候通过OpenGL。有关详细信息,请参阅Mac OS X技术概述的Media Layer Frameworks部分。
您可能听说过的其他“石英”技术:
这些是GPU渲染的内部实现,而不是API。他们决定是否在CPU中创建窗口缓冲区,仅使用OpenGL作为纹理上传(默认)或使用OpenGL进行整个渲染,not always improves performance。您可以使用QuartzGLEnable Info.plist设置在两者之间切换。有关解释,请参阅John Siracusa对Mac OS X 10.4 Tiger的评论,页面13和14。
“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
执行任何操作,可能会很快收到“未知对象”错误。