JOGL
vs. OpenGL
In diesem Abschnitt soll JOGL nun mit OpenGL verglichen
werden.
Als Basis soll die Beispielszene aus dem Tutorial dienen, wobei
nun die Anzahl der Spielfiguren auf 12 erhöht wurde. Um die
Geschwindigkeit messen zu können, wird die Kamera um die Szene
gedreht. Dabei wird bei verschieden hoher Auflösung der Spielfiguren
die Anzahl der Frames pro Sekunde ermittelt. Um die Auflösung
zu manipulieren werden die Integervariablen slices und stacks verwendet,
die jeweils die Werte 5, 10, 20, 40, 80, 160 und 320 annehmen.
In JOGL ermitteln wir die fps in der Methode frame() :
Calendar now = null;
long ms = 0;
int frames = 0;
private void frame()
{
now = Calendar.getInstance();
if (now.getTimeInMillis() >= (ms + 1000))
{
ms = now.getTimeInMillis();
System.out.println(frames);
frames = 1;
} else
{
frames++;
}
}
Mittels des Calendar-Objekts wird die aktuelle Systemzeit ermittelt.
Mit der long-Variablen ms wird dann verglichen, ob bereits eine
Sekunde vergangen ist. Wenn ja, wird die Anzahl der Frames auf der
Konsole ausgegeben und die Varbiale frames, in der die Frames gezählt
werden, wieder auf 1 gesetzt. Ist noch keine Sekunde vergangen, wird
frames um 1 hochgezählt.
In OpenGL ermitteln die Frames ebenfalls in einer speziellen Methode,
die folgendermaßen implementiert ist:
int frames = 0;
int s = 0;
time_t sec;
void frame()
{
time(&sec);
if (sec > s)
{
s = sec;
if(frames != 0)
{
cout << frames << endl;
}
frames = 1;
}
else
{
frames++;
} }
Die Sekunden der Systemzeit werden dabei mittels der Methode time(..)
ausgelesen.
Es wurde auf zwei verschiedenen Rechnerkonfigurationen getestet.
Testrechner 1:
- AMD Athlon K7 XP 2800+ Barton
- ATI Radeon 9600XT mit 128MB DDR Ram
- Arbeitsspeicher 768 MB
|
JOGL
|
OpenGL
|
Slices / Stacks : 5
|
375
|
375
|
Slices / Stacks : 10
|
355
|
360
|
Slices / Stacks : 20
|
303
|
306
|
Slices / Stacks : 40
|
197
|
198
|
Slices / Stacks : 80
|
84
|
84
|
Slices / Stacks : 160
|
26
|
26
|
Slices / Stacks : 320
|
13
|
12
|
Testrechner 2:
- Intel Pentium 4 2 GHz
- NVIDIA GeForce4 MX 460 mit 64 MB Ram
- Arbeitsspeicher 768 MB
|
JOGL
|
OpenGL
|
Slices / Stacks : 5
|
74
|
75
|
Slices / Stacks : 10
|
74
|
75
|
Slices / Stacks : 20
|
74
|
75
|
Slices / Stacks : 40
|
74
|
75
|
Slices / Stacks : 80
|
37
|
38
|
Slices / Stacks : 160
|
18
|
19
|
Slices / Stacks : 320
|
9
|
8
|
Fazit: Im Test stellte sich heraus, dass JOGL
durchaus mit der Geschwindigkeit von OpenGL mithalten kann. In Kombination
mit den anderen Vorteilen der Programmiersprache Java, wie z.B.
der sehr guten Erlernbarkeit, dem Listener-Konzept bei der Ereignisbehandlung
und der Plattformunabhängigkeit, stellt sich JOGL als interessante
Alternative für OpenGL dar, gerade für Neueinsteiger in
die Welt der 3D-Programmierung.
|