I wonder if someone can distinguish precisely between these? For my understanding, Core Graphics is just a "Framework Package" which contains Quartz Core and Quartz 2D. But I'm not sure about if Quartz 2D actually is Quartz Core? Maybe someone can draw some lines there? What makes up the differences between these?
When looking at the documentation, I see Quartz Core is listing up all the Core Animation stuff only. So Quartz Core == Core Animation?
Quartz 2D is an API of the Core Graphics framework that implements drawing.
Quartz Core is a framework that includes APIs for animation and image processing.
Quartz frameworks and their APIs
CoreGraphics.framework
QuartzCore.framework
Quartz.framework
OS X onlyAll three frameworks use OpenGL underneath because all drawing in iOS or OS X goes through OpenGL at some point. See the section Media Layer Frameworks of the Mac OS X Technology Overview for details.
Other "Quartz" technologies you may have heard of:
These are internal implementations of GPU rendering, not APIs. They decide whether to create the window buffer in the CPU and only use OpenGL to upload as a texture (the default) or to do the whole rendering using OpenGL, which not always improves performance. You can alternate between the two using the QuartzGLEnable Info.plist setting. For an explanation see John Siracusa review of Mac OS X 10.4 Tiger, pages 13 and 14.
“Quartz” and “Core” are marketing names sprinkled over frameworks and APIs in a random manner. If they wanted to create a confusing naming mess, they succeeded.
Be careful however, a new single view application will link the CoreGraphics framework by default but not QuartzCore. So you might quickly get an 'unknown object' error if you are doing anything with
CAEAGLLayer
for example.From the Quartz 2D Programming Guide:
I have a tendency of using Quartz and Core Graphics interchangeably when referring to 2-D drawing on the Mac / iPhone, even if that's not technically correct.
The Quartz Core framework on the iPhone contains the classes and supporting elements for Core Animation and also contains items used for Core Image.