iphone opengl-es

¿Se requiere OpenGL para mi iPhone?



opengl-es (7)

En un iPhone:

Si estoy escribiendo un juego que tiene múltiples niveles, con múltiples animaciones (secuencias de imágenes), jpg y png (transparente), algunas a pantalla completa y otras no, algunas en bucle y otras solo una vez. ¿Cuál es la mejor manera de hacerlo? Cada nivel puede tener hasta 10MB de imágenes. Agregue a esta música y video (escenas cortadas). Todos los gráficos 2D, sin modelos 3D.

¿Se requiere OpenGL? ¿O se puede lograr esto con Quartz o Core Animation?


Hago similares usando UIViews y un poco de Core Graphics (Quartz 2D) y funciona bien. He encontrado que el dibujo personalizado en Core Graphics lo lleva un poco más allá, aunque las UIView funcionan mejor cuando se les da imágenes en lugar de tener que dibujarse a sí mismas. También ten cuidado con muchas transparencias. Sin embargo, probablemente descubras que las animaciones grandes o largas (muchas fotogramas) serán las más importantes. Existen algunas técnicas para minimizar el impacto de las animaciones que implican permitirle purgar imágenes de la memoria si no se muestran de inmediato (se me olvida la configuración). Esto puede hacer que tus animaciones no sean tan fluidas como lo estarían de otra manera (aunque no estoy seguro si Open GL ES me ayudaría).

Probablemente deberías hacer un prototipo usando UIViews, y luego decidir si vale la pena hacer el trabajo extra para OpenGL ES. Además, si aún no está familiarizado con OpenGL / Open GL ES, es una curva de aprendizaje abrupta.


Lo más probable es que OpenGl.


Sugeriría usar Quartz. OpenGL ES es realmente lo mejor para cosas en 3D. Sin embargo, ambos funcionan bastante bien, por lo que si ya conoces OpenGL ES, está bien usarlo.


He usado tanto Quartz como OpenGL para hacer gráficos en el iPhone, y aunque OpenGL tiene una curva de aprendizaje mucho más alta, ofrece un rendimiento mucho mejor que Quartz. Supongamos que tiene una escena que implica dibujar 6 imágenes grandes y semitransparentes una sobre otra. Quartz lo hará, pero probablemente obtendrá 15 fps en el mejor de los casos. OpenGL aprovecha el chip PowerVR del iPhone y el dibujo está acelerado por hardware, por lo que puede cargar esas imágenes en texturas OpenGL y renderizar a 25-30 fps sin problemas.

Sin embargo, estoy de acuerdo con Phil: intente hacerlo usando Quartz y vea si satisface sus necesidades. OpenGL es extremadamente potente, pero su API carece de algunas de las características de conveniencia de Quartz (como guardar / restaurar el estado de los gráficos).

Recordamos por completo, es posible que desee echar un vistazo a las herramientas de desarrollo de iPhone de Unity ( http://unity3d.com/#iphone ). Aprovechan OpenGL, pero te proporcionan un IDE para crear tu juego. Se abstrae todo el código de nivel de gráficos, por lo que puede centrarse en el juego de alto nivel. Mi hermano lo usa para escribir juegos de iPhone, y es extremadamente genial.


Recomiendo echarle un vistazo al iPhone Cocos2D .

cocos2d para iPhone es un marco para crear juegos 2D, demostraciones y otras aplicaciones gráficas / interactivas. Se basa en el diseño de cocos2d: utiliza la misma API, pero en lugar de usar python usa Object-C.


Una ventaja del uso de OpenGL ES es que la inversión de tiempo para aprender la tecnología podría aplicarse a otras plataformas / contextos y su juego es potencialmente más amigable con los puertos. Estos pueden no ser importantes para ti.


Debes considerar usar muchos menos recursos en tu juego, Apple recomienda no usar más de 10 mb en texturas para las aplicaciones openGL.

Pruebe el atlas de textura, los gráficos reutilizados, los gráficos basados ​​en mosaicos ... pero evite usar muchos elementos gráficos.