objective framework developer apple iphone core-graphics quartz-graphics quartz-2d

iphone - framework - ¿Cuál es la diferencia entre Quartz Core, Core Graphics y Quartz 2D?



swift ios documentation (3)

De la Guía de programación en 2D de Quartz :

La API 2D de Quartz forma parte del framework Core Graphics, por lo que es posible que vea a Quartz como Core Graphics o, simplemente, CG.

Tengo una tendencia a usar Quartz y Core Graphics intercambiablemente cuando me refiero al dibujo 2D en Mac / iPhone, incluso si eso no es técnicamente correcto.

El marco de Quartz Core en el iPhone contiene las clases y los elementos de apoyo para Core Animation y también contiene elementos utilizados para Core Image.

Me pregunto si alguien puede distinguir precisamente entre estos? Para mi comprensión, Core Graphics es solo un "Paquete de Framework" que contiene Quartz Core y Quartz 2D. Pero no estoy seguro si Quartz 2D en realidad es Quartz Core? ¿Tal vez alguien puede dibujar algunas líneas allí? ¿Qué hace las diferencias entre estos?

Cuando miro la documentación, veo que Quartz Core está listando todas las cosas de Core Animation solamente. Entonces Quartz Core == Core Animation?


Quartz 2D es una API del marco de Core Graphics que implementa el dibujo.
Quartz Core es un marco que incluye API para animación y procesamiento de imágenes.

Marcos de cuarzo y sus API

CoreGraphics.framework

  • Quartz 2D API maneja el contexto gráfico e implementa el dibujo.
  • Quartz Services API proporciona acceso de bajo nivel al servidor de ventana. Esto incluye hardware de pantalla, resolución, frecuencia de actualización y otros.

QuartzCore.framework

Quartz.framework OS X solamente

Los tres marcos usan OpenGL debajo porque todos los dibujos en iOS u OS X pasan por OpenGL en algún momento. Consulte la sección Marcos de capa de medios de la Descripción general de la tecnología Mac OS X para obtener más información.

Otras tecnologías de "Cuarzo" de las que puede haber oído hablar:

  • Quartz Extreme: aceleración GPU para Quartz Composer.
  • QuartzGL (también conocido como "Quartz 2D Extreme"): aceleración GPU para Quartz 2D.

Estas son implementaciones internas de renderizado de GPU, no de API. Deciden si crean el búfer de la ventana en la CPU y solo usan OpenGL para cargar como una textura (el valor predeterminado) o para hacer la representación completa usando OpenGL, lo que no siempre mejora el rendimiento . Puede alternar entre los dos usando la configuración QuartzGLEnable Info.plist. Para obtener una explicación, consulte la revisión de John Siracusa de Mac OS X 10.4 Tiger, páginas 13 y 14 .

"Quartz" y "Core" son nombres de marketing salpicados sobre marcos y API de forma aleatoria. Si querían crear un lío de nombres confuso, lo lograron.


Tenga cuidado, sin embargo, una nueva aplicación de vista única vinculará el marco CoreGraphics por defecto, pero no QuartzCore. Por lo tanto, puede obtener rápidamente un error de ''objeto desconocido'' si está haciendo algo con CAEAGLLayer por ejemplo.