Java 2D Engine
-
Hi zusammen,
ich hätte eine kleine vielleicht fast etwas zu allgemeine Frage.
Ich würde mir gerne eine App schreiben welche schnell 2D Grafiken darstellen
kann.Was sollte ich in Java dazu nehmen?
Swing oder awt?
Einen Timer basteln der update/repaint etc. aufruft oder gibts was besseres?Ich habe natürlich schon im voraus nachgeschaut was so geht, bin mir aber ziemlich unsicher.... liegt daran dass die meisten Java-Erklärungen zwar eine Komponente erklären aber nicht wie man sie anwendet.
Einfach ein bisschen theoretisches Wissen....
Danke!
-
noobiexyz schrieb:
Ich würde mir gerne eine App schreiben welche schnell 2D Grafiken darstellen
kann.Definier das mal genauer! Eine Art Imageviewer oder soll's letztendlich für ein Spiel sein?
Um schnell viel zu rendern nimm LWJGL (also OpenGL)
-
Also schon eher in richtung Spiel... also ein möglichst schneller, sauberer Bildaufbau für so 2D Sachen... Tilebasiertes Spiel zB. Zelda... oder SuperMario oder sowas.
Wenn ich bisher richtig gelesen habe muss ich mir irgendwie einen VoilateImage DoubleBuffer einrichten und dann den benutzen. Brauche ich dazu eine Canvas?
Und woher weiss das System, dass ich in den DoubleBuffer zeichnen will?Danke!
-
Für Spiele würde ich dir echt zu einer schnellen Grafikapi raten. Deswegen OGL.
Ich bezweifel irgendwie, dass Swing und AWT schnell genug sind wenn genug Daten zusammenkommen.
Ich muss aber dazusagen: Ich hab keine Ahnung! Hab mich noch nie in die Richtung beschäftigt. Ist jetzt nur so aus dem Bauch raus...
-
okay, ich werds erstmal ausprobieren, was ich sonst so hinkriege... bin mal deinem Vorschlag gefolgt... das sieht echt super aus und ich bin auch gleich hängen geblieben Trotzdem versuche ich ersteinmal ein bissie mit dem Basics rumzuspielen bevor ich eine fertige Engine nehme.
Danke.
-
xindon schrieb:
Ich bezweifel irgendwie, dass Swing und AWT schnell genug sind wenn genug Daten zusammenkommen.
Ich muss aber dazusagen: Ich hab keine Ahnung! Hab mich noch nie in die Richtung beschäftigt. Ist jetzt nur so aus dem Bauch raus...
Swing bzw. Java2D ist dafür locker schnell genug. ...ist gar kein Problem, das damit zu machen.
Die Performanceprobleme, die man Swing immer nachsagt, betreffen ja ganz andere Bereiche.
...abgesehen davon stellt man Java2D momentan mehr und mehr um, so dass intern OpenGL oder DirectX genutzt wird.
-
Die Performanceprobleme, die man Swing immer nachsagt, betreffen ja ganz andere Bereiche.
Dürfte ich Nachfragen was das für Bereiche sind? Ich bin doch etwas Ahnungslos
Danke!
-
Noobiexyz schrieb:
Dürfte ich Nachfragen was das für Bereiche sind? Ich bin doch etwas Ahnungslos
Da geht es mehr um die verschiedenen Komponenten wie Knöpfe, Check-Boxen usw.. Swing malt die selbst und ist damit gegenüber der Nutzung von nativen Komponenten etwas im Nachteil. ...wobei sich das inzwischen auch etwas relativiert hat, da im Hintergrund immer mehr OGL oder DX genutzt wird. ...hatte ich ja schon erwähnt. Man hat(te) hier zumindest eine Art Zwischenschicht mehr, wenn man Swing mit der Nutzung von nativen GUI-Komponenten vergleicht.
Wenn Du mit der Grafik weiter gehen möchtest, als irgendeine GUI zu programmierern, wirst Du aber Java2D nutzen. ...eigentlich ist es falsch, da dann noch von Swing zu reden. ...im Prinzip müsste Java2D zwar ein ähnliches Problem haben, man ist aber schon noch näher am darunterliegenden System dran. ...und mit der OGL-Pipeline sollte das kaum noch einen Unterschied machen.
Hinweis: Die OGL-Pipeline wird sich in Java 6 massiv bemerkbar machen, die DX-Pipeline für Windows kommt aber wohl erst in Java 7 so richtig. ...Java 6 wird wohl im Herbst rauskommen. ...man kann die OGL-Pipeline aber AFAIK auch unter Windows aktivieren. Momentane Snapshots von Java 6 sind diesbezüglich mehr oder weniger vollständig und auch schon sehr stabil:
Falls Dir die Grafikoperationen zu langsam sind, solltest Du das mal ausprobieren. ...wobei Du dann darauf achten musst, dass Du beim Starten der JVM die OGL-Pipeline aktivierst.