2016-05-23 9 views
1

Ich habe ein Farbfeld. Wenn ich ShapeRenderer verwende, dauert es zu lange. Ich benutze diesen Code:LibGDX schnellste Möglichkeit, Farbfeld zu rendern

for (int i = 0; i < colors.length; i++) { 
     for (int j = 0; j < colors[0].length; j++) { 
      shapeRenderer.setColor(colors[i][j]); 
      shapeRenderer.rect(i,j,1,1) 
     } 
    } 

Es muss ein schneller Weg sein, weil Texturen aus Pixeln sind und deren Wiedergabe ist wirklich schnell. Meine Frage ist: Wie kann ich dieses Farbfeld so schnell wie eine Textur rendern?

+1

Texturen sind wirklich schnell gezogen, weil es auf die GPU im Allgemeinen nur wenige Anrufe ist. Dies pixelgenau durchzuführen, erfordert viele weitere Aufrufe und Zustandsänderungen. Es gibt nicht viel, was Sie tun können, um das zu ändern, wenn das Array häufig geändert wird. Ist dies nicht der Fall, sollten Sie sie beim Ändern auf eine Textur zeichnen und dann einfach die Textur verwenden. – CConard96

+0

Das Array wird nur einmal generiert, also wie kann ich es in eine Textur konvertieren? –

Antwort

1

Texturen werden wirklich schnell gezeichnet, weil es in der Regel nur ein paar Aufrufe an die GPU sind. Dies pixelgenau durchzuführen, erfordert viele weitere Aufrufe und Zustandsänderungen. Es gibt nicht viel, was Sie tun können, um das zu ändern, wenn das Array häufig geändert wird. Ist dies nicht der Fall, sollten Sie sie beim Ändern auf eine Textur zeichnen und dann einfach die Textur verwenden.

In LibGDX können Sie jedes Pixel auf eine Pixmap zeichnen und daraus eine neue Textur erstellen. Quelle: https://github.com/libgdx/libgdx/wiki/Pixmaps

Beispielcode:

Pixmap pixmap = new Pixmap(colors.length, colors[0].length, Format.RGBA8888); 
for (int i = 0; i < colors.length; i++) 
{ 
    for (int i = 0; i < colors.length; i++) 
    { 

     pixmap.setColor(0, 1, 0, 0.75f); //Set to color r,g,b,a 
     pixmap.drawPixel(i,j); //Draw the pixel 
    } 
} 
Texture pixmaptex = new Texture(pixmap); //Create new texture from the Pixmap 
pixmap.dispose(); 
+0

Vielen Dank! :) –

Verwandte Themen