Hallo!
Für meine Physik-Zulassungsarbeit programmiere ich Simulationen unter Java und habe eine Frage zur Grafikprogrammierung:
Was ist die beste und schnellste Methode, um flimmerfreie Animationen zusammen mit Swing-Elementen auf den Bildschirm zu bringen?? Wichtig ist, dass die Animationen 3D-Objekte (nicht Java3D, sondern hardcore-selbstimplementiert ;-)) und normale AWT-Funktionen gleichzeitig verwenden.
Bisher mache ich das folgendermaßen:
Ich habe ein JWindow-Hauptfenster, in dem einige Buttons usw sind und ein JComponent, in dem gerendert wird (Nur dieser wird also immer aktualisiert).
In JComponent:
1 Ich habe einen int-Backbuffer, in den zuerst der Hintergrund gemalt wird (Dieser BackBuffer ist nur ein int-Array!)
2 Ich rendere ein 3D-Objekt Pixel für Pixel auf diesen int-BackBuffer und kopiere dieses dann in ein BackBuffer-BufferedImage (setRGB)
3 Nun male ich mit AWT-Routinen auf das BackBuffer-BufferImage(Text, Linien, usw).
4 BackBuffer-Image auf Front-Buffer malen
Bis jetzt muss also wahnsinnig viel kopiert werden und ich bekomme keine guten Frame-Raten…Wie kann ich am schnellsten Pixel-für-Pixel malen und trotzdem noch die AWT-Funktionen verwenden?
Außerdem: Bringt BufferStrategy hier etwas??
Danke für Antworten!
Schöne Grüße,
Alex
Für meine Physik-Zulassungsarbeit programmiere ich Simulationen unter Java und habe eine Frage zur Grafikprogrammierung:
Was ist die beste und schnellste Methode, um flimmerfreie Animationen zusammen mit Swing-Elementen auf den Bildschirm zu bringen?? Wichtig ist, dass die Animationen 3D-Objekte (nicht Java3D, sondern hardcore-selbstimplementiert ;-)) und normale AWT-Funktionen gleichzeitig verwenden.
Bisher mache ich das folgendermaßen:
Ich habe ein JWindow-Hauptfenster, in dem einige Buttons usw sind und ein JComponent, in dem gerendert wird (Nur dieser wird also immer aktualisiert).
In JComponent:
1 Ich habe einen int-Backbuffer, in den zuerst der Hintergrund gemalt wird (Dieser BackBuffer ist nur ein int-Array!)
2 Ich rendere ein 3D-Objekt Pixel für Pixel auf diesen int-BackBuffer und kopiere dieses dann in ein BackBuffer-BufferedImage (setRGB)
3 Nun male ich mit AWT-Routinen auf das BackBuffer-BufferImage(Text, Linien, usw).
4 BackBuffer-Image auf Front-Buffer malen
Bis jetzt muss also wahnsinnig viel kopiert werden und ich bekomme keine guten Frame-Raten…Wie kann ich am schnellsten Pixel-für-Pixel malen und trotzdem noch die AWT-Funktionen verwenden?
Außerdem: Bringt BufferStrategy hier etwas??
Danke für Antworten!
Schöne Grüße,
Alex