¿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.
- Scene2d cómo manejar actor tocado (LibGDX)
- Cómo dibujar la clase Button en libgdx
- No se puede enlazar una acción. LibGDX
- Cómo dibujar TiledMap usando scene2d
- LinearLayout analógico dentro de la tabla en LibGDX
- Cómo cambiar pantallas en Scene2D libGDX
- Fondo de libgdx Cambio de imagen
- Libgdx - cómo agregar la imagen de fondo en la etapa?
- Uso de scene2d.ui con libgdx: ¿De dónde proviene la piel?
- Centre SelectBox texto en libgdx usando scene2d
- Scale2d escala de botón con libgdx
- Obtener un actor por nombre en libgdx
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.