Java BufferedStrategy vs BufferedImage

Bitte nicht so viele Informationen. Was benutzt du denn? Swing und co musst du es selber machen und es vermeidet eben Bildfehler mit Double oder Triple Buffering. JavaFX macht double Buffering direkt selber!

BufferedImage scheint ja etwas Ähnliches zu sein, nur eben das das Image diese Aufgabe selber übernimmt. Ich würde trotzdem immer das Double Buffering anderen Methoden vorziehen! Wieso? Ganz klar, es ist gängiger und andere Programmierer werden da schneller verstehen was du gecodet hast, als eben solche unkonventionelle Methoden.
 
Also zu aller erst hat BufferStrategy nichts mit BufferedImage zu tun - zumindest nicht direkt.

BufferedStrategy ist wie der Name sagt, eine Möglichkeit eine Strategie von AWT für Buffering bereitzustellen - man gibt ja im Konstruktur dessen, die Anzahl an Buffern an die man haben möchte. 2 bedeutet Double Buffering, 3 bedeutet Triple Buffering usw.
In Verbindung mit mit Graphics2D/Graphics wenn man direkt auf eine AWT-Komponente zeichnet, z.b. in ein Panel oder Canvas.

Was es macht ist ganz simpel: Es sorgt dafür das man in einen zusätzlichen Buffer schreibt und nicht direkt in die Oberfläche selbst - also in nen Panel oder Canvas. Defakto muss dann das AWT nicht dauernd "Repaint"-Nachrichten an den Kontext rumschicken, sondern macht das nur einmal wenn das bufferStrategy.show() aufgerufen wird - dann wird schlichtweg einfach nur der aktuelle Buffer entweder direkt auf die Oberfläche gezeichnet (Double-Buffer) oder in einen weiteren Buffer kopiert (Triple-Buffer). Dadurch hat man ganz klar eine bessere Performance und hat auch das flackern nicht mehr das entstehen kann durch die "Repaint"-Nachrichten.

Aber das gilt nur, solange man mit Graphics2D/Graphics arbeitet, wenn man das Zeichnen selbst übernimmt, z.b. in einem BufferedImage dann macht man im Grunde schon selbst ein "Double"-Buffering und braucht diese Strategy nicht.

Soweit klar?
 
Zurück
Oben