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.

Page: 1 2 3 4

ZDNet.de Redaktion

Recent Posts

Supercomputer-Ranking: Vier europäische Systeme in den Top Ten

Einziger Neueinsteiger ist das Alps-System in der Schweiz. Die weiteren Top-Ten-Systeme aus Europa stehen in…

1 Woche ago

Angriffe mit Banking-Malware auf Android-Nutzer nehmen weltweit zu

Im vergangenen Jahr steigt ihre Zahl um 32 Prozent. Die Zahl der betroffenen PC-Nutzer sinkt…

1 Woche ago

Künstliche Intelligenz fasst Telefonate zusammen

Die App satellite wird künftig Telefongespräche in Echtzeit datenschutzkonform mit Hilfe von KI zusammenfassen.

1 Woche ago

MDM-Spezialist Semarchy stellt Data-Intelligence-Lösung vor

Als Erweiterung von Master-Data-Management ermöglicht es die Lösung, den Werdegang von Daten verstehen und sie…

1 Woche ago

Apple stopft 15 Sicherheitslöcher in iOS und iPadOS

Sie erlauben unter anderem das Einschleusen von Schadcode. In älteren iPhones und iPads mit OS-Version…

1 Woche ago

Hochleistungs-NAS-Speicher für KI-Daten

Neuer Speicher für KI von Huawei mit integrierter Ransomware-Erkennungs-Engine und deutlich geringerem Energiekonsum.

1 Woche ago