Hallo,
Ich teste gerade einiges aus was die Grafische darstellung angeht. Ziel wird letztendlich eine Anwendung mit einem zentralen Zeicheneditor.
Ok Zeichnen klappt problemlos soweit. Nur die Performance ist nicht so wie ich sie gerne hätte. Nicht das man mich jetzt falsch versteht es ist keine zeitkritische Anwendung wo es auf kleinste FPS ankommt. Das hat ehr was damit zu tun das ich es absolut nicht mag wenn mir etwas träger vorkommt als es sein muss.
Der Zeichenbereich soll 2000x2000 Pixel groß sein. Sprich nicht gerade wenig was neu gezeichnet werden muss vom Programm. Darauf werden sich X Grafikelemente befinden letztendlich.
Aktuell ist die Zeichenfläche ein JPanel. Es gibt ein BufferedImage als Backbuffer auf dem vorher meine Objekte gezeichnet werden, welcher dann im paintComponent vom Panel aufgetragen wird.
So möchte ich jetzt einen Kreis zeichnen wähle ich diesen aus und Ziehe ihn auf der Zeichenfläche auf. Hier merkt man auch die verzögerung beim Zeichnen. Der "Vorschau" Kreis der Anzeigt wie es beim loslassen der Maustaste aussieht läuft der Maus nur sehr träge nach. Was mir sagt das ist noch nicht so wie ich es haben möchte um mein Programm weiter zu erstellen.
Um noch etwas auszuhohlen.
Ich hab das selbe Programm schon einmal in Delphi für Windows geschrieben. Das war auch träge beim Zeichnen wegen der enormen größe von 2000x2000 pixeln. Dort bin ich dann zu einer 2D Engine gewechselt welche das ganze über OpenGL von der Grafikkarte berechnen lassen hat.
Das ganze hatte dann aber zwei Ärgernisse für mich. Zum einen war es nur noch möglich das Programm zu nutzen wenn eine 3D Grafikkarte im PC verbaut war. Das zweite war mit der Grund warum mir Java ins Auge gefallen ist das es auf einmal einen Mac user gab der es nutzen wollte.
Laaaaange rede kurzer sinn. Nachdem ich gemerkt hab das die Grafik träge ist hab ich angefangen mich einzulesen. Aber mittlerweile bin ich ehr verwirrt weshalb ich hier frage.
1. Wenn ich richtig gelesen hab nutzt Graphics2D OpenGL Funktionen für die Grafikfrunktionen oder nicht?
1.1 Mein Programm etwas umgestellt mit Graphics zu Graphics2D Casts hat es nicht wirklich beschleunigt. Vermute also es nutzt so oder so ein Software OpenGL Rendering was mir keine Geschwindigkeit gibt.
1.2 Oder ich bin wirklich so durcheinander und es passt gar nix von meinen annahmen.
2. Wenn ich wegen der 2D Beschleunigung und Java suche finde ich auf der Sun Seite immer nur Hinweise das es auf Windows, Linux und Solaris funktioniert. MacOS wird nie erwähnt.
3. Gibt es eine möglichkeit Grafikoperationen sowohl in Software als auch in Hardware halbwegs schnell zu ermögichen?
4. Eine fertige Java Grafikengine möchte ich nicht wirklcih nutzen da ich es gar nicht auf absolute geschwindigkeit abgesehen habe. Sprich ich möchte es vom Programmaufwand Simpel halten.
Hoffe das es nicht zu viel Text war und das man mir helfen kann.
Ich teste gerade einiges aus was die Grafische darstellung angeht. Ziel wird letztendlich eine Anwendung mit einem zentralen Zeicheneditor.
Ok Zeichnen klappt problemlos soweit. Nur die Performance ist nicht so wie ich sie gerne hätte. Nicht das man mich jetzt falsch versteht es ist keine zeitkritische Anwendung wo es auf kleinste FPS ankommt. Das hat ehr was damit zu tun das ich es absolut nicht mag wenn mir etwas träger vorkommt als es sein muss.
Der Zeichenbereich soll 2000x2000 Pixel groß sein. Sprich nicht gerade wenig was neu gezeichnet werden muss vom Programm. Darauf werden sich X Grafikelemente befinden letztendlich.
Aktuell ist die Zeichenfläche ein JPanel. Es gibt ein BufferedImage als Backbuffer auf dem vorher meine Objekte gezeichnet werden, welcher dann im paintComponent vom Panel aufgetragen wird.
So möchte ich jetzt einen Kreis zeichnen wähle ich diesen aus und Ziehe ihn auf der Zeichenfläche auf. Hier merkt man auch die verzögerung beim Zeichnen. Der "Vorschau" Kreis der Anzeigt wie es beim loslassen der Maustaste aussieht läuft der Maus nur sehr träge nach. Was mir sagt das ist noch nicht so wie ich es haben möchte um mein Programm weiter zu erstellen.
Um noch etwas auszuhohlen.
Ich hab das selbe Programm schon einmal in Delphi für Windows geschrieben. Das war auch träge beim Zeichnen wegen der enormen größe von 2000x2000 pixeln. Dort bin ich dann zu einer 2D Engine gewechselt welche das ganze über OpenGL von der Grafikkarte berechnen lassen hat.
Das ganze hatte dann aber zwei Ärgernisse für mich. Zum einen war es nur noch möglich das Programm zu nutzen wenn eine 3D Grafikkarte im PC verbaut war. Das zweite war mit der Grund warum mir Java ins Auge gefallen ist das es auf einmal einen Mac user gab der es nutzen wollte.
Laaaaange rede kurzer sinn. Nachdem ich gemerkt hab das die Grafik träge ist hab ich angefangen mich einzulesen. Aber mittlerweile bin ich ehr verwirrt weshalb ich hier frage.
1. Wenn ich richtig gelesen hab nutzt Graphics2D OpenGL Funktionen für die Grafikfrunktionen oder nicht?
1.1 Mein Programm etwas umgestellt mit Graphics zu Graphics2D Casts hat es nicht wirklich beschleunigt. Vermute also es nutzt so oder so ein Software OpenGL Rendering was mir keine Geschwindigkeit gibt.
1.2 Oder ich bin wirklich so durcheinander und es passt gar nix von meinen annahmen.
2. Wenn ich wegen der 2D Beschleunigung und Java suche finde ich auf der Sun Seite immer nur Hinweise das es auf Windows, Linux und Solaris funktioniert. MacOS wird nie erwähnt.
3. Gibt es eine möglichkeit Grafikoperationen sowohl in Software als auch in Hardware halbwegs schnell zu ermögichen?
4. Eine fertige Java Grafikengine möchte ich nicht wirklcih nutzen da ich es gar nicht auf absolute geschwindigkeit abgesehen habe. Sprich ich möchte es vom Programmaufwand Simpel halten.
Hoffe das es nicht zu viel Text war und das man mir helfen kann.