2011-10-05 19 views
7

Me gustaría saber qué tipo de ventajas obtengo de utilizar Core Graphics en lugar de Open GL ES. Mi pregunta principal se basa en esto:Ventajas de utilizar Core Graphics

  • Creación de animaciones de Vista simple.
  • Creación de objetos visuales atractivos (Gráficos como Core Plot, por ejemplo, objetos animados, etc.).
  • Consumo de tiempo (tanto el aprendizaje y la implementación)
  • simples juegos en 2D
  • complejo de juego en 2D
  • 3D Juegos
  • el mantenimiento del código ad código también más limpio.
  • Integración más fácil con otros elementos de la interfaz de usuario.

Gracias.

Respuesta

21

Primero, quiero aclarar un poco la terminología aquí. Cuando las personas hablan de Core Graphics, generalmente se están refiriendo al dibujo en 2D de Quartz, que es una API de dibujo basada en vectores bidimensionales. Se utiliza para dibujar elementos vectoriales en la pantalla o en contextos fuera de la pantalla, como archivos PDF. Core Animation es responsable de la animación, el diseño y algunos efectos tridimensionales limitados que involucran capas rectangulares y elementos de la interfaz de usuario. OpenGL ES es una API de nivel inferior para hablar con el hardware de gráficos en dispositivos iOS para el dibujo en 2-D y 3-D.

Hace mucho en su pregunta, y el juicio sobre lo que es mejor en cada situación es subjetivo y depende completamente del desarrollador y de sus necesidades particulares. Sin embargo, puedo proporcionar algunos consejos generales.

En general, una recomendación que verá en la documentación de Apple y en las presentaciones de los ingenieros es que lo mejor es utilizar el más alto nivel de abstracción que resuelve su problema en particular.

Si solo necesita dibujar una interfaz de usuario en 2-D, lo primero que debe intentar es implementar esto utilizando los elementos de UIKit proporcionados por Apple. Si no tienen la capacidad que necesita, cree UIViews personalizados. Si está diseñando código multiplataforma para Mac-iOS (como en el marco de Trazado central), puede desplegar a utilizar CALayers de Animación Core personalizados.Cada paso hacia abajo en este proceso requiere que escriba más código para manejar las cosas que el nivel anterior hizo por usted.

Puede hacer una cantidad sorprendente de cosas con Core Animation, con un rendimiento bastante bueno. Esto no solo se limita a animaciones en 2-D, sino que también puede extenderse a un simple trabajo 3-D.

OpenGL ES se encuentra debajo del dibujo de todo lo que ve en la pantalla para un dispositivo iOS, aunque esto no está expuesto a usted. Como tal, proporciona la menor abstracción para el renderizado en pantalla, y requiere que escriba la mayor cantidad de código para hacer algo. Sin embargo, puede ser necesario en situaciones en las que desee extraer el máximo rendimiento de la pantalla 2D (por ejemplo, en un juego de acción) o para representar objetos y entornos tridimensionales reales.

De nuevo, tiendo a recomendar que las personas comiencen con el nivel más alto de abstracción cuando escriben una aplicación, y solo se despliegan cuando descubren que no pueden hacer algo o el rendimiento no está dentro de la especificación que intentan alcanzar. Menos líneas de código hacen que las aplicaciones sean más fáciles de escribir, depurar y mantener.

Dicho esto, hay algunos buenos marcos que se han desarrollado para abstraer OpenGL ES, como cocos2D y Unity 3D, lo que podría facilitar el trabajo con OpenGL ES en muchas situaciones. Para cada caso, deberá evaluar qué tiene sentido para las necesidades particulares de su aplicación.

4

Básicamente, use OpenGL si está haciendo un juego. De lo contrario, use CoreGraphics. CoreGraphics te permite hacer cosas simples integradas en tu código de UI normal.

Creando animaciones de Vista simple. -> CG

Creación de objetos visuales atractivos (Gráficos como Core Plot, por ejemplo, objetos animados, etc.). -> CG

Demasiado tiempo (tanto de aprendizaje como de implementación) -> OpenGL y CG son algo difíciles al principio.

simples juegos en 2D -> OpenGL

complejo de juego en 2D -> OpenGL

3D Juegos -> OpenGL

mantenimiento Código del anuncio de código también más limpio. -> Irrelevante

+0

¿Cambiaría el aprendizaje de OpenGL con Cocos2d (por ejemplo) en juegos 2D? Edité mi publicación original, agregué la "integración más fácil con otros elementos de la interfaz de usuario". Gracias Andrew. – Peres

+0

Agregaría que un enfoque combinado también puede funcionar bien para algunas situaciones: use CoreGraphics para dibujar un activo por adelantado, luego OpenGL para organizarlo y presentarlo en cada cuadro. –

Cuestiones relacionadas