web-dev-qa-db-fra.com

Quelle est la différence entre Quartz Core, Core Graphics et Quartz 2D?

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?

66
openfrog

À 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.

37
Brad Larson

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.


Cadres Quartz et leurs API

CoreGraphics.framework

  • Quartz 2D L'API gère le contexte graphique et implémente le dessin.
  • Quartz Services L'API fournit un accès de bas niveau au serveur Windows. Cela inclut le matériel d'affichage, la résolution, le taux de rafraîchissement et autres.

QuartzCore.framework

  • Core Animation : API Objective-C pour faire une animation 2D.
  • Core Image : traitement d'image et vidéo (filtres, déformation, transitions).iOS 5

Quartz.frameworkOS X uniquement

  • Image Kit : afficher et éditer des images.
  • Kit PDF : afficher et éditer des PDF.
  • Compositeur Quartz : affichez les compositions Quartz Composer.
  • QuickLookUI: prévisualisez les éléments multimédias.

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:

  • Quartz Extreme: accélération GPU pour Quartz Composer.
  • QuartzGL (aka "Quartz 2D Extreme"): accélération GPU pour Quartz 2D.

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.

88
Jano

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.

6
Michael M