Home
Über JOGL
  Entstehung
  Eigenschaften
  Installation
Tutorial
  Lektion1
  Lektion2
  Lektion3
  Lektion4
  Lektion5
JOGL vs.
   OpenGL

Links
Impressum

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.