Je me demande si quelqu'un peut distinguer précisément ceux-ci? À ma connaissance, Core Graphics n'est qu'un "Framework Package" qui contient Quartz Core et Quartz 2D. Mais je ne sais pas si Quartz 2D est réellement Quartz Core? Peut-être que quelqu'un peut y tracer des lignes? Qu'est-ce qui fait la différence entre ceux-ci?
En regardant la documentation, je vois que Quartz Core répertorie tous les trucs de Core Animation uniquement. Donc Quartz Core == Core Animation?
À partir du Guide de programmation Quartz 2D :
L'API Quartz 2D fait partie du framework Core Graphics, vous pouvez donc voir Quartz appelé Core Graphics ou, tout simplement, CG.
J'ai tendance à utiliser Quartz et Core Graphics de manière interchangeable lorsque je me réfère à un dessin 2D sur Mac/iPhone, même si ce n'est pas techniquement correct.
Le framework Quartz Core sur l'iPhone contient les classes et les éléments de support pour Core Animation et contient également des éléments utilisés pour Core Image.
Quartz 2D est une API du framework Core Graphics qui implémente le dessin.
Quartz Core est un framework qui inclut des API pour l'animation et le traitement d'images.
CoreGraphics.framework
QuartzCore.framework
Quartz.framework
OS X uniquement
Les trois cadres utilisent OpenGL en dessous, car tous les dessins dans iOS ou OS X passent par OpenGL à un moment donné. Voir la section Media Layer Frameworks de la présentation de la technologie Mac OS X pour plus de détails.
Autres technologies "Quartz" dont vous avez peut-être entendu parler:
Ce sont des implémentations internes du rendu GPU, pas des API. Ils décident de créer le tampon de fenêtre dans le CPU et d'utiliser uniquement OpenGL pour télécharger en tant que texture (par défaut) ou de faire tout le rendu en utilisant OpenGL, ce qui n'améliore pas toujours les performances . Vous pouvez alterner entre les deux en utilisant le paramètre QuartzGLEnable Info.plist. Pour une explication, voir la revue John Siracusa de Mac OS X 10.4 Tiger, pages 1 et 14 .
"Quartz" et "Core" sont des noms marketing parsemés de manière aléatoire sur les frameworks et les API. S'ils voulaient créer un désordre de dénomination déroutant, ils ont réussi.
Attention cependant, une nouvelle application à vue unique reliera le framework CoreGraphics par défaut mais pas QuartzCore. Ainsi, vous pourriez rapidement obtenir une erreur "objet inconnu" si vous faites quoi que ce soit avec CAEAGLLayer
par exemple.