PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Java: HW-Beschleunigung


ethrandil
2003-04-22, 22:38:10
Hiho,
inwieweit ist eigentlich das AWT-Paket in Java Hardwarebeschleunigt?

Wo finde ich da Unterlagen zu?
(Ich finde nur sachen zu OGL ... und das will ich nicht.)

micki
2003-04-24, 16:17:53
die nutzen wohl GDI. also ist es so beschleunigt wie jedes andere programm auch.
wenn du swing benutzt könnte das anders aussehen, bin mir da nicht sicher.

hast du vielleicht ne konkreterere frage? weil, so allgemein gesagt muss nicht immer zutreffen.

MfG
micki

Marcel
2003-04-24, 18:06:36
Swing ist bitter. AWT ist rattenschnell, bietet aber weniger Möglichkeiten: Es ist auf das beschränkt, was die Zielsysteme bieten. Demnach dürfte das dann unter Windows durchaus GDI-beschleunigt sein.

Unregistered
2003-05-05, 20:18:53
Vielleicht ein bisschen spät - aber besser spät als das wir die bisherigen Antworten so stehen lassen:

Für 2D Grafik gibt's Java2D, das gehört zu AWT. (Swing verwendet zur Darstellung übrigends Java2D und bitter ist Swing sicher nicht).
Ich glaube nicht, dass Java2D GDI verwendet, da GDI nicht im geringsten so mächtig ist wie Java2D (z.B. Alpha-Blending). Java2D verwendet (für gewisse Operationen) unter Windows DirectX . Gewisse Operationen lassen sich so sehr schnell durchführen, während andere immer noch in Software ablaufen. Eine gute Anlaufstelle ist www.javagaming.org, die haben ein Forum für Java2D und paar Dokumente bezüglich Hardwarebeschleunigung ( http://www.javagaming.org/Documents/documents.html )

Grüße,
Stefan

Xmas
2003-05-05, 20:38:13
Originally posted by Unregistered
Vielleicht ein bisschen spät - aber besser spät als das wir die bisherigen Antworten so stehen lassen:

Für 2D Grafik gibt's Java2D, das gehört zu AWT. (Swing verwendet zur Darstellung übrigends Java2D und bitter ist Swing sicher nicht).
Ich glaube nicht, dass Java2D GDI verwendet, da GDI nicht im geringsten so mächtig ist wie Java2D (z.B. Alpha-Blending). Java2D verwendet (für gewisse Operationen) unter Windows DirectX . Gewisse Operationen lassen sich so sehr schnell durchführen, während andere immer noch in Software ablaufen. Eine gute Anlaufstelle ist www.javagaming.org, die haben ein Forum für Java2D und paar Dokumente bezüglich Hardwarebeschleunigung ( http://www.javagaming.org/Documents/documents.html )

Grüße,
Stefan
Alpha Blending in GDI (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_00h3.asp)
Würde mich mal interessieren was Java2D so viel mehr kann als GDI.

Es gibt in Windows überhaupt nur 3 Wege, mit dem Grafikkartentreiber zu kommunizieren: GDI, DirectX, OpenGL (VGA-Emulation im Fenster mal außen vor ;)). Mindestens eines davon muss also letztlich verwendet werden, und am wahrscheinlichsten ist GDI, da DirectX viele für die 2D-Darstellung nötige Funktionen gar nicht bereitstellt (aber deswegen auch mit GDI zusammenarbeiten kann).

Demirug
2003-05-05, 20:45:17
Xmas, der vollständigkeit wegen.

Es gab noch WinG was aber inzwischen im GDI aufgegangen ist.

Und dann wäre da noch GDI+ der Nachfolger von GDI und ab Longhorn auch vollständig durch die Hardware beschleunibar. Im Moment muss da bei den komplexen Sachen noch die CPU aushelfen.

grakaman
2003-05-05, 21:18:03
Originally posted by Demirug
Xmas, der vollständigkeit wegen.

Es gab noch WinG was aber inzwischen im GDI aufgegangen ist.

Und dann wäre da noch GDI+ der Nachfolger von GDI und ab Longhorn auch vollständig durch die Hardware beschleunibar. Im Moment muss da bei den komplexen Sachen noch die CPU aushelfen.

Können das die heutigen Grafikchips nicht in HW? Ich dachte der Voodoo3 war der erste, der das konnte?!

MfG

Xmas
2003-05-06, 04:22:44
Originally posted by grakaman
Können das die heutigen Grafikchips nicht in HW? Ich dachte der Voodoo3 war der erste, der das konnte?!

MfG
Du meinst wahrscheinlich Banshee.
GDI+ gabs damals doch noch gar nicht ;)

mapel110
2003-05-06, 06:18:20
hm, wieso lässt man die 2d sachen von der cpu machen ?
sind die shader dazu nicht zu gebrauchen ?

alphablendeing lässt sich ja soweit ich weiss umschalten, so dass es von dergrafikkarte gemacht wird.
warum nicht mehr ?

mal wieder ne abwärtskompatibilitätsgeschichte ?
und erst bei longhorn wirds anders ?

Demirug
2003-05-06, 07:33:59
Originally posted by mapel110
hm, wieso lässt man die 2d sachen von der cpu machen ?
sind die shader dazu nicht zu gebrauchen ?

alphablendeing lässt sich ja soweit ich weiss umschalten, so dass es von dergrafikkarte gemacht wird.
warum nicht mehr ?

mal wieder ne abwärtskompatibilitätsgeschichte ?
und erst bei longhorn wirds anders ?

Da sind so Sache wie füllen mit Farbverläufe oder füllen mit Bitmaps. Dann noch eine Rheie spielchen mit dem Font-AA usw.

Das es erst mit Longhorn kommt liegt daran das MS nicht gerne die Grafiktreiberschnittstelle zwischen zwei Release ändert. Das macht man immer nur in Verbindung mit einer neuen Version.

Unregistered
2003-05-06, 11:51:25
Ok, nochmal zurück dazu, was Java2D mehr kann als GDI. Dabei stellt sich immer die Frage, wie man das Ziel erreicht. Da man in GDI eine SetPixel-Funktion hat, kann man sicher natürlich immer auf die "aber-das-kann-GDI-auch" Argumentation zurückziehen - nur dass ich dann an einer anti-aliased Line eine Woche sitze, steht auf einem anderen Blatt.

Also in diesem Sinne, die Features in den Java2D vorne liegt (Bin schon gespannt, was Xmas doch noch finden wird ;) :

- Generelle Untestützung von Alpha-Composites (Ok, es geht für Bitmaps), aber bei Java2D kann ich es für jede Zeichenoperation - einfach so - (de)aktivieren.
- Antialias für alle Zeichenoperationen.
- Einfachste Transformationen.
- Farbverläufe oder Bitmaps als Füllung oder Umrandung (quasi nach Belieben), da schönes Framework (Klasse Paint) geliefert wird.
- PNG, JPEGs, GIF in ein bis zwei Zeilen laden
- ImageOperationen (ImageFilter)

Kurzum viele der Gründe, warum GDI+ die Nachfolge von GDI antreten sollte.

Unregistered
2003-05-06, 12:08:26
Noch etwas nachgeschoben: Auf http://www.cs.umd.edu/hcil/agile2d/ gibt's eine Implementierung von Java2D, die OpenGL zur Beschleunigung verwendet. In der Praxis scheint der Geschwindigkeitsunterschied aber nicht so berauschend zu sein (da Text-Rendering von Agile recht lahm ist und da Sun selbst ja schon teilweise Direct3D zur Beschleunigung von Java2D verwendet).