Question Quand utiliser ShapeRenderer, Mesh + SpriteBatch, Box2D et Scene2D dans Libgdx?


Je suis nouveau dans Android Game Development et après avoir commencé avec libgdx ShapeRenderer et fait un peu plus de recherche, je suis devenu confus si je commençais avec le bon pied.

Donc, ce que je voudrais vraiment savoir, c'est quand utiliser ShapeRenderer, Mesh + SpriteBatch, Box2D et Scene2D.


11
2018-02-20 23:34


origine


Réponses:


LibGDX a beaucoup d'API (principalement orthogonales) pour le rendu. J'apprends encore beaucoup d'entre eux, mais je peux donner un aperçu des différentes parties.

ShapeRenderer vous permet de placer rapidement et facilement des polygones et des lignes de couleur plate sur l'écran. Ce n'est pas particulièrement efficace (il télécharge beaucoup de données de sommets sur chaque rendu). Mais il peut être très rapide pour y aller. Son orienté fortement vers l'écran (par défaut, un projet orthographique en plein écran et ses unités sont généralement des pixels).

le Mesh class vous donne un contrôle plus direct sur la géométrie, mais vous êtes exposé à beaucoup plus de détails (comme l'encodage des couleurs en tant que flottants et le stockage des données de sommet, des données de couleur et de texture dans le même tableau flottant, et le concept d'index tableaux).

le SpriteBatch est orienté autour de "sprites" (zones généralement rectangulaires avec une texture). Cela cache une partie de la complexité (et de la flexibilité) de la texturation avec les maillages.

Box2D est destiné à la modélisation physique et ne ressemble à aucune des autres parties de l'API que vous avez mentionnées (qui concernent principalement le rendu).

Finalement, Scene2D concerne principalement la création d'éléments d'interface utilisateur animés tels que des boutons, des listes et des curseurs. Mais il est suffisamment puissant (et dispose d’un support suffisamment soigné et flexible pour les animations et les événements d’interaction).

Vous pouvez également utiliser des commandes brutes "OpenGL" (voir GL20), aussi.

Vous pouvez totalement combiner ces différentes primitives (une mise en garde est que vous devez généralement "vider" et "terminer" ShapeRenderer/SpriteBatch/Mesh rendre avant de commencer une saveur différente). Ainsi, par exemple, vous pouvez utiliser Scene2D pour votre "menu principal" et certaines méta-actions dans votre jeu, SpriteBatch pour rendre le coeur de votre jeu, et utiliser un ShapeRenderer pour générer des superpositions de débogage (pensez à visualiser des boîtes englobantes, etc.).

Notez également que la majeure partie de libGDX est orientée vers la 2D. Brut OpenGL et le Mesh Les API peuvent également être utilisées pour créer des objets 3D.

Vérifier la exemple de gdx-invaders pour voir comment il utilise Mesh, OpenGL et SpriteBatch. (Je pense que cet exemple est antérieur à Scene2d, il n'y a donc rien de cela ...). Il est également intéressant de regarder la mise en œuvre de ces classes pour voir ce qu’elles font sous les couvertures.


25
2018-02-21 02:39