Ich habe mal angefangen, nebenbei an einem kleinen Spielchen zu arbeiten. Zum Anzeigen renderte ich erst ein Image und gab das dann auf dem Bildschirm aus. Nachdem ich dann Hintergrundbild und ein paar teilweise transparente Objekte gezeichnet habe, ging die Performance in den Keller und ich habe ein bisschen gegooglt, was ich machen kann. Ich bin auf VolatileImage gestoßen. Mein Zeichcode sieht so etwa so aus:
Vorher war mScreen ein Image, die Geschwindigkeit ist jetzt ca. 2,5mal so hoch, also was ist an VolatileImage so besonders, warum ist es schneller?
Und meine zweite Frage: Für die einzelnen Grafikobjekte (wie z.B. Hintergrundbild) verwende ich noch Image. Sollte ich das auch umstellen?
Code:
private VolatileImage mScreen;
public void renderScreen()
{
if(mScreen==null || mScreen.validate(this.getGraphicsConfiguration())==VolatileImage.IMAGE_INCOMPATIBLE)
mScreen = this.createVolatileImage(PANEL_WIDTH, PANEL_HEIGHT);
Graphics2D tG2D = (Graphics2D)mScreen.getGraphics();
mBG.renderObject(tG2D);
for(int i=0; i<6; ++i)
mCities[i].renderObject(tG2D);
mClouds.renderObject(tG2D);n
this.drawFPS(tG2D);
tG2D.dispose();
}
public void printScreen()
{
if(mScreen.validate(this.getGraphicsConfiguration())==VolatileImage.IMAGE_OK) {
try {
Graphics2D tG2D = (Graphics2D)this.getGraphics();
tG2D.drawImage(mScreen, 0, 0, this);
tG2D.dispose();
}
catch(Exception pE) {
System.out.println(pE);
}
}
}
Und meine zweite Frage: Für die einzelnen Grafikobjekte (wie z.B. Hintergrundbild) verwende ich noch Image. Sollte ich das auch umstellen?