So lassen sich in Java OpenGL-Funkionen nutzen

Ist der GLEventListener implementiert, werden vier Ereignisse beobachtet: init(), display(), reshape() und displayChanged().

Das Ereignis init() ist eine Initialisierungsfunktion. OpenGL/JOGL ruft sie auf, wenn beim Starten des Programms die Grafikinformationen organisiert werden. In der Regel genügen globale Einstellungen. Die GL-Instanz wird mithilfe der Programmoptionen initialisiert.


Mit java.awt.Component.paint() lässt sich display() vergleichen. Jedes Mal, wenn die Leinwand neu gezeichnet werden muss, erfolgt ein Aufruf. Der unten aufgeführte Code zeichnet die Objekte (Dreieck, Diamant, Rechteck) auf das spezifizierte GLDrawable-Canvas.


Das Ereignis reshape() skaliert das Anzeigefenster neu. In vorliegendem Fall muss festgelegt werden, wie Canvas auf Änderungen der Fenstergröße durch den Benutzer reagieren soll. Es gilt hier, die Größe des Darstellungsfelds anzupassen.


Die letzte grundlegende Methode in JOGL ist displayChanged(). In manchen Fällen ändert sich der Anzeigemodus bei laufendem Programm. Die Methode ist zwar nicht wirklich in JOGL implementiert, aber vielleicht wird das eines Tages der Fall sein. Daher sollte man die JOGL-JavaDocs vor der Verwendung überprüfen.


Erwägungen zum Multi-Threading

Laut JOGL-Handbuch verwenden Bibliotheken wie das OpenGL Utility Toolkit (GLUT) zur Ereignisverarbeitung ein Modell mit nur einem Thread. Bei einer Callback-Registrierung wird die Callback-Funktion folglich von jenem Thread angerufen, auf dem auch der GLUT-Ereignisprozessor lief.

AWT und JOGL verfolgen einen Multi-Threading-Ansatz. Das heißt, die AWT- und JOGL-Bibliotheken erzeugen bei mehreren Ereignissen auch mehrere Threads: einen Thread für Maus- und Tastaturereignisse, einen Thread für Systemereignisse, einen Thread für Anzeige- sowie Rendering-Ereignisse und so weiter. Aus diesem Grund muss gewährleistet sein, dass das Programm gemeinsame Daten zeitgleich verarbeitet.

Weitere Informationen zu OpenGL:

Nach der Erstellung eines GLCanvas oder GLJPanel und der OpenGL-Klassen lässt sich mit OpenGL genauso verfahren wie mit C/C++. Man erhält ein OpenGL-Kontextobjekt in den OpenGL-Methoden init(), display() und so weiter. Damit lassen sich dann die API-Befehle aufrufen. (OpenGL-Programmierung und Echtzeit-3D-Grafiken werden in diesem Artikel nicht berücksichtigt.)

Beispielprojekte mit JOGL, die sehr OpenGL-lastig sind, finden sich auf java.net. Die OpenGL-Webseite bietet ebenfalls zahlreiche Informationen für ein besseres Verständnis der Funktionsweise.

Themenseiten: Anwendungsentwicklung, Software

Fanden Sie diesen Artikel nützlich?
Content Loading ...
Whitepaper

Artikel empfehlen:

Neueste Kommentare 

Noch keine Kommentare zu So lassen sich in Java OpenGL-Funkionen nutzen

Kommentar hinzufügen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *