langsames Modell-Batch-Rendering in libGDX

Ich habe eine Frage, ob es in libGDX einen speziellen Modus zum Gruppieren von Modellen gibt. Ich habe eine einfache Klasse erstellt, die implementiert wirdApplicationListener das zeigt mein problem. Ich benutze den nächtlichen Build von libGDX.

Ich habe zwei verschiedene Modelle gelesen, die dieselbe Textur verwenden. Die Anwendung rendert jeweils 250 Modelle jedes Typs. So sieht der Teil des Renderns von Code aus:

  mModelBatch.begin(camera);
  for(int y=0; y<50; y++)
  {
     for(int x=-5; x<5; x++)
     {
        ModelInstance instance;
        if(x%2 == 0) instance = modelInstance1;
        else instance = modelInstance2;

        instance.transform.setToTranslation(x, 0, -y);
        mModelBatch.render(instance);
     }

  }

  mModelBatch.end(); 

Ich habe versucht, eine gute Lösung zu finden, also habe ich einen weiteren Testcode geschrieben:

public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool)
{
  for(int y=0; y<50; y++)
  {
     for(int x=-5; x<5; x++)
     {
        ModelInstance instance;
        if(x%2 == 0) instance = modelInstance1;
        else instance = modelInstance2;

        instance.transform.setToTranslation(x, y%3, -y);

        Renderable renderable = pool.obtain();
        renderable = instance.getRenderable(renderable);
        renderables.add(renderable);
     }
  }

}

Ich habe es so benutzt, wie es unten gezeigt wird:

mModelBatch.begin(camera);      
mModelBatch.render(testRenderProvider);
mModelBatch.end();

Es gab mir jedoch immer noch 13 FPS. In der Zwischenzeit habe ich für einen weiteren Test in Blender die gleiche Map wie im vorherigen Programm erstellt. Als nächstes habe ich alles in nur einem Objekt zusammengefasst (ohne zusätzliche Ausgaben). Auf diese Weise habe ich ein GROSSES Objekt mit einer Größe von fast 1 MB erstellt. Dies ist auf dem Screenshot von Blender zu sehen.

Ich habe das Testprogramm so geändert, dass es nur dieses eine GROSSE Objekt zeichnet:

mModelBatch.begin(camera);
      modelInstance1.transform.setToTranslation(0, 0, 0);
      mModelBatch.render(modelInstance1);
mModelBatch.end();

Als nächstes habe ich das Programm auf meinem Handy (Sony XPeria Mini Pro - das gleiche wie zuvor) und dem iPod 5g gestartet und habe ... 60 FPS!

Ist es möglich, alles in nur einem Draw Call zu rendern?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage