¿Cuándo usar ShapeRenderer, Mesh + SpriteBatch, Box2D y Scene2D en Libgdx?

Soy nuevo en Android Game Development y después de empezar con libgdx ShapeRenderer e hice un poco más de búsqueda, me sentí confundido si empecé con el pie derecho.

Entonces, lo que realmente me gustaría saber es cuándo debo usar ShapeRenderer, Mesh + SpriteBatch, Box2D y Scene2D.

LibGDX tiene un montón de APIs (casi ortogonales) para renderizar. Todavía estoy aprendiendo mi camino alrededor de muchos de ellos, pero puedo dar una visión general de las diferentes partes.

ShapeRenderer permite ShapeRenderer rápida y sencilla los polígonos y líneas básicas de color plano en la pantalla. No es particularmente eficiente (carga muchos datos de vértice en cada procesamiento). Pero puede ser muy rápido para ponerse en marcha. Su orientado fuertemente a la pantalla (que por defecto a un proyecto ortográfico en la pantalla completa y sus unidades son generalmente píxeles).

La clase Mesh le da un control más directo sobre la geometría, pero está expuesto a muchos más detalles (como codificar colores como flotadores y almacenar datos de vértices, datos de color y datos de textura en el mismo conjunto de flotadores y el concepto De matrices de índice).

El SpriteBatch está orientado alrededor de "sprites" (áreas generalmente rectangulares con una textura en ellas). Esto oculta parte de la complejidad (y flexibilidad) de la texturización con mallas.

Box2D es para la modelización de la física, y no es como cualquiera de las otras partes de la API que mencionó (que son sobre todo la prestación).

Finalmente, Scene2D es principalmente sobre la creación de elementos de interfaz de usuario animados como botones, listas y deslizadores. Pero es lo suficientemente potente (y tiene suficiente apoyo limpio y flexible para animaciones y eventos de interacción) que puede implementar un montón de "juego" en él también.

También puede utilizar comandos crudos "OpenGL" (véase GL20 ), también.

Puedes mezclar y combinar totalmente estos diferentes primitivos (una advertencia es que generalmente debes "limpiar" y "finalizar" cualquier ShapeRenderer / SpriteBatch / Mesh antes de empezar un sabor diferente). Así, por ejemplo, puede usar Scene2D para su "menú principal" y algunas acciones meta en su juego, un SpriteBatch para procesar el núcleo de su juego, y usar un ShapeRenderer para generar superposiciones de depuración (piense en visualizar cuadros delimitadores, etc.).

También tenga en cuenta que la mayor parte de libGDX está orientada hacia 2D. Raw OpenGL y las API de Mesh también se pueden utilizar para construir objetos 3D.

Compruebe el ejemplo de gdx-invaders para ver cómo utiliza Mesh , OpenGL y SpriteBatch . (Creo que este ejemplo pre-fechas Scene2d, por lo que no hay nada de eso …). También vale la pena revisar la implementación de estas clases para ver lo que están haciendo debajo de las portadas.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.