OpenGL vs Cocos2d: ¿Qué elegir?

Entiendo que cocos2d es una API realmente simple, y que puedo usarla para hacer juegos / aplicaciones 2D simples o enormes o incluso a veces 3D. También entiendo que OpenGL es más complicado, es API de nivel inferior, etc.

Pregunta:
¿Qué es mejor para implementar juegos 2D / 3D?
¿Por qué necesitamos aprender OpenGL si tenemos frameworks simples como cocos2d?
¿Qué puedes hacer con OpenGL que no puedes hacer con cocos2d?

¡Gracias por adelantado!

¿Qué es mejor para implementar juegos 2D / 3D?

  • Es difícil de decir, pero siempre hay una API de nivel superior para facilitarle las cosas. Por ejemplo, estás escribiendo un shootem 2D. Es probable que uses un ciclo de juego, querrás usar sprites y hacer que se muevan en la pantalla. Es posible que desee realizar animaciones como explosiones. Terminarás escribiendo tu propia API de nivel superior para hacer esas cosas. Cocos2D ya ha resuelto esos problemas para ti. Cualquier otro frameworld debería haberlo resuelto.

¿Por qué necesitamos aprender OpenGL si tenemos frameworks simples como cocos2d?

  • En el caso de que desee comstackr el comportamiento estándar de un marco, especialmente la parte de dibujo, debería ingresar a openGL. Si hay algo que le gusta tener que no sale de la caja, puede encontrarse reimplementando una class de marco base. Por ejemplo, mire los sombreadores utilizados en Cocos2D 2.0. Si te gusta un modo de mezcla especial, como un efecto de tinte, no lo obtendrás de forma gratuita. Existe un atributo de color para un CCSprite, pero puede que este no sea el resultado esperado. Entonces tendrás que escribir tu propio sombreador y conectarlo al sprite que te gusta que se muestre de una manera diferente.

¿Qué puedes hacer con OpenGL que no puedes hacer con cocos2d?

  • Esta comparación realmente no funciona, ya que cocos2d facilita a opengGL la parte de dibujo para build ese api de nivel superior y facilitarle la vida como desarrollador de juegos.

Cocos2d es una envoltura alnetworkingedor de las características 2D de OpenGL (a partir de esto: http://www.cocos2d-iphone.org/about ). Bajo el capó, utiliza OpenGL ES para implementar sus funciones. Esto es bueno porque significa que habrá una sobrecarga de performance mínima para que pueda comenzar a usar su API más simple sin tener que sumergirse en la ruta de aprendizaje definitivamente más grande de OpenGL.

Sin embargo, solo tiene un fuerte soporte 2D y si planea escribir juegos 3D posteriores, perderá todos los beneficios de Cocos2d: ¿por qué volvería a escribir un motor de renderizado 3D con un marco 2D que, bajo el capó, usa un motor 3D muy fuerte? Pierdes el performance por un montón de trabajo innecesario.

Entonces, la respuesta más simple es: para 2d Cocos2d, para 3d OpenGL.

Si quieres iniciar OpenGL ES, este es un muy buen tutorial para principiantes: http://iphonedevelopment.blogspot.it/2009/05/opengl-es-from-ground-up-table-of.html