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:

  • Obtenir un point flottant matériel avec NDTO Android
  • RecyclerView.ViewHolder ne peut pas lier la vue avec ButterKnife
  • Conversion du flux d'entrée en bitmap
  • Android: modifier par programme l'étiquette de l'application?
  • Comment installer / remplacer sur Android sans utiliser Eclipse
  • Android: Java v. Python
  • 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?

  • Ajoutez la légende à l'image sur le nouveau jeu whatsapp ver 2.11.399 (Android)
  • Comment puis-je faire en sorte que Play Game Services ne se connecte pas automatiquement au démarrage?
  • Android Fragment reçoit un conteneur nul dans onCreateView ()
  • Comment configurer Vim pour le développement Android?
  • Pourquoi appeler Process.killProcess (Process.myPid ()) est une mauvaise idée?
  • Une façon de supprimer les avertissements concernant les "chaînes codées en dur" dans les fichiers de mise en page?
  • 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.