Appelle libgdx SpriteBatch commencez et mettez fin à la méthode à plusieurs reprises coûteuses?

Le libgdx SpriteBatch démarre-t-il et finit-il des méthodes coûteuses pour le processeur ou ralentissent-ils les performances si je les appelle plusieurs fois?

Par exemple:

  • Erreur de tuyau cassé lors de la capture de l'image dans Android
  • Android: QCMediaPlayer n'a pas pu être localisé
  • Obtenez la taille et la largeur d'une mise en page par programme
  • Android - La découverte Bluetooth ne trouve aucun périphérique
  • Disparer DialogFragment par programme
  • Comment faire référence à l'activité actuelle ou principale d'une autre classe
  • public void render(float delta) { GL10 gl = Gdx.gl10; gl.glClearColor(0, 0, 0, 0); gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.begin(); //draw something batch.end(); //do something before draw the others batch.begin(); //draw others batch.end(); //update //controls } 

    Sur le code ci-dessus, je n'appelle que 2 fois pour commencer et finir. Mais je veux le faire 4 ou 5 fois … cela ralentira-t-il les choses?

  • Mode paysage Android coupe mes boutons sur le dessus
  • Où est BuildConfig.DEBUG?
  • Pourquoi je ne peux pas créer la bordure ronde pour un coin spécifique?
  • L'utilisation de l'utilisation de l'aide ACCESS_LOCATION_EXTRA_COMMANDS
  • Android Real Time Multiplayer - La création de la salle échoue
  • Toutes les bibliothèques com.android.support doivent utiliser la même version exacte
  • 2 Solutions collect form web for “Appelle libgdx SpriteBatch commencez et mettez fin à la méthode à plusieurs reprises coûteuses?”

    Il n'est pas cher. Ne t'inquiète pas. Rappelez-vous simplement que vous ne devez pas, si vous utilisez des textures différentes, vous ne devez pas appeler commencer et finir pour chacune d'elles. Il change automatiquement la texture de la région que vous dessinez. Bien sûr, cela signifie que vous devez regrouper les appels de dessin des régions.

    Cela l'expliquera mieux, supposons que nous avons un atlas avec toutes les TextureRegions of Hero and Enemies, et un autre avec toutes les TextureRegions of Coins and Platforms:

     //You only need to call batch.begin once: batch.begin(); //then draw //-Hero //-Enemies //(Automatic texture switching here) //-Coins //-Platforms batch.end(); 

    Comme un peu plus, il y a un cas particulier: Habituellement, vous avez un fond qui remplit tout l'écran, totalement opaque. Ainsi, le mélange invalidant pour ce tirage améliore définitivement les performances. Donc, vous lisez une fois pour cela, puis encore pour les autres régions, comme ceci:

     batch.disableBlending(); batch.begin(); //draw background batch.end(); batch.enableBlending(); batch.begin(); //etc 

    Passer de 2 appels à 5 appels ne sera pas trop gros d'un accord.

    Cependant, en général, l'appel end provoque un lot pour éliminer tout l'état qu'il a accumulé et invoquer l'appel de tirage OpenGL sous-jacent. (Il peut flush plus tôt s'il se remplit, ou que vous changez de textures, mais généralement, le chasseur se produit à la end heure.) Réduire les invocations d'appels de dessins OpenGL et les téléchargements de texture est la principale motivation pour la classe SpriteBatch .

    Il existe des compteurs sur le SpriteBatch vous pouvez utiliser pour voir comment cela se pratique réellement, ce qui vous permettra de souligner si vous le faites trop. Voir https://code.google.com/p/libgdx/wiki/SpriteBatch#Performance_tuning

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.