Java2D - Was ist die bewährte Rendermethode ?

Kr0e

Gesperrter Benutzer
Hallo,

habe mit Java2D schon lange nichts gemacht (sonst nur OpenGL) aber muss damit nun ein kleines Game schreiben.

Ich wollte hier mal eben nach den best-practices fragen... Von damals hab ich noch so Begriffe wie BufferStrategy und DoubleBuffering bzw. VolatileImage im Sinn.

Aber was die "schnellste Variante" ist, wechselt ja teilweise bei den JDK Versionen. Ich arbeite mit einer 6er.


Ich habe bereits gelesen, dass BufferStrategy wohl recht fix sein soll. Aber ist ein JPanel z.b. nicht ebenfalls Doublebuffered ? Immerhin hat es eine Methode setDoubleBuffered()...

Dann noch eine Frage zu "active/passive" Rendering. Ich nehme an, mit passive ist das getimed-te Aufrufen von repaint() gemeinet, was ja lediglich einen Repaintbefehl sendet und nicht direkt ausgeführt wird. Ich nehme an, Aktiv-Rendering ist dann wohl die BufferStrategy Variante ??


Wäre nice, wenn ihr mir hier aktuelle Infos geben könntet, wie man "heutzutage" das Letzte aus Java2D rausholt.

Viel Dank und Gruß,

Christopher
 

Volvagia

Top Contributor
Die BufferStrategy hat keinen ("klassischen") Doppelbuffer. Ich weiß nicht mehr wie das heißt, aber dabei werden 2 - 4 Offscreen-Images erzeugt, diese abwechselnd befüllt und dann nur die Darstellung "umgelinkt". Swing ist doppelt gebuffert, deshalb geht damit einfach passives Rendern. Das bedeutet, dass du wie du sagtest nur ein repaint schickst. Der View hat z. B. eine List mit Paintable-Instanzen, Paintable ist ein Interface und definiert die Methode paint(Graphics g); In der paintComponent() wird z. B. die Liste durchgelaufen und von jeder Instanz paint(g) aufgerufen.
Im aktiven Rendern hast du eine Schleife, die ständig den Content zeichnet. Wäre auch über eine BufferStrategy möglich.

Allerdings würde ich dir abraten danach zu gehen was das Schnellste ist und es so zu machen, wie du am besten klar kommst. Höllisch schneller Code nützt dir rein garnichts, wenn du nur Probleme beim Bearbeiten und Erweitern hast. Optimierungen können am Ende immer noch durchgeführt werden, sofern es nicht schnell genug läuft.
 

Kr0e

Gesperrter Benutzer
Habs jetzt auf die einfache Tour gemacht (JPanel und paintComponent überschrieben + passives Rendern durch Timer)

Nen Krieg kann man mit der Renderperformance zwar nicht führen, aber für meine Zwecke ausreichend...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
lumo Java2D oder doch OpenglES Spiele- und Multimedia-Programmierung 4
windl CoverFlow in Java2D erstellt Spiele- und Multimedia-Programmierung 24
E Wie rendert Java2D/AWT BufferedImages Spiele- und Multimedia-Programmierung 9
M Realisierung einer Sichtweise in Java2D Spiele- und Multimedia-Programmierung 3
S Java2D: AffineTransformation - KOS Spiegeln Spiele- und Multimedia-Programmierung 5
T Transformationen in Java2D Spiele- und Multimedia-Programmierung 6
B Texte in Java2d Spiele- und Multimedia-Programmierung 4
K Hardwarebeschleunigung für Java2D Spiele- und Multimedia-Programmierung 9
R Java2D-Komponenten Spiele- und Multimedia-Programmierung 6
A Java2D Spiel "JSlotter" Spiele- und Multimedia-Programmierung 3
B Java2D: Gradientpaint Spiele- und Multimedia-Programmierung 2
H mit Java2D Markierung über JTable zeichnen und diese bewegen Spiele- und Multimedia-Programmierung 2
M Java2D: GradientPaint mit mehreren Farben Spiele- und Multimedia-Programmierung 4
T Java2D Spiel, beim Hinzufügen eines Bildes ruckelt das ganze Spiele- und Multimedia-Programmierung 3
G SNES Mode7 mit Java2D? Spiele- und Multimedia-Programmierung 2
C Java2D Darstellungsfehler Spiele- und Multimedia-Programmierung 2
C OpenGl Support für Applet (sun.java2d.opengl=True) Spiele- und Multimedia-Programmierung 3
S [Java2D] Performance Frage Spiele- und Multimedia-Programmierung 4
V Java2D dynamische Kurven Spiele- und Multimedia-Programmierung 3
G Punkte des Kreises ausgeben (Java2D) Spiele- und Multimedia-Programmierung 4
K Java2d Bild als JPG oder so speichern Spiele- und Multimedia-Programmierung 10

Ähnliche Java Themen


Oben