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.
Das jüngste Update für Windows, macOS und Linux stopft drei Löcher. Eine Anfälligkeit setzt Nutzer…
Zwei von Google-Mitarbeitern entdeckte Schwachstellen werden bereits aktiv gegen Mac-Systeme mit Intel-Prozessoren eingesetzt. Sie erlauben…
Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…
Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.
Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…
Kontinuierliche Content Produktion und Markenaufbau sind essentieller Pfeiler von langfristigen Unternehmenserfolg. Das ist mittlerweile auch…