LWJGL (https://www.lwjgl.org) ist eine Java-Bibliothek, die den plattformübergreifenden Zugriff auf beliebte native APIs ermöglicht, die bei der Entwicklung von Grafik- (OpenGL/Vulkan), Audio- (OpenAL) und Parallel-Computing-Anwendungen (OpenCL) nützlich sind. Dieser Zugriff ist direkt und hochperformant, aber auch in eine typsichere und benutzerfreundliche Schicht eingebettet, die für das Java-Ökosystem geeignet ist.
LWJGL ist eine Enabling-Technologie und bietet Low-Level-Zugriff. Es handelt sich nicht um ein Framework und es stellt keine übergeordneten Dienstprogramme bereit, die über die nativen Bibliotheken hinausgehen. Daher wird unerfahrenen Programmierern empfohlen, eines der Frameworks oder Spiel-Engines auszuprobieren, die LWJGL verwenden, bevor sie direkt mit der Bibliothek arbeiten.
LWJGL ist Open-Source-Software und kostenlos verfügbar.
Nützliche Links:
Kontakt:
Wenn Sie einen Beitrag leisten möchten, finden Sie in doc/README einen schnellen Überblick über die Projektstruktur, Installationsanweisungen und Konfigurationsoptionen.
Ab Version 3.1.0
wird LWJGL als Modulsatz verteilt. Es ist nur das Kernmodul erforderlich und alle Bindungen sind optional (einige Bindungen hängen jedoch von anderen Bindungen ab). Der einfachste Weg, LWJGL herunterzuladen, ist die Verwendung des Build-Konfigurators auf der Website.
Der Build-Konfigurator generiert Maven- und Gradle- Deklarationen, die zu bestehenden Projekten hinzugefügt werden können. Dies ist die einfachste Möglichkeit, LWJGL während der Entwicklung zu verwenden.
LWJGL kann auch als einfacher Satz JAR-Dateien heruntergeladen werden. Jedes Modul besteht aus den folgenden Dateien:
Um eine LWJGL-Anwendung zu kompilieren und auszuführen, sollten die Basis- und nativen JAR-Dateien des Kernmoduls und jede verwendete Bindung zum Klassenpfad hinzugefügt werden. LWJGL extrahiert die nativen Dateien in einen temporären Ordner und lädt sie automatisch, sodass keine weitere Konfiguration erforderlich ist. Wenn weitere Anpassungen erforderlich sind (z. B. beim Erstellen eines plattformspezifischen Installationsprogramms), können die nativen Dateien manuell extrahiert und über java.library.path
geladen werden. Weitere Optionen finden Sie in der Konfigurationsklasse.
LWJGL 3 erfordert zum Erstellen und Ausführen Java 8 oder höher und unterstützt derzeit die folgenden Plattformen/Architekturen:
Beispielcode:
Informationen zur Migration von LWJGL 2-Code zu LWJGL 3 finden Sie im Migrationshandbuch.
Die häufigsten Probleme, mit denen LWJGL-Benutzer konfrontiert sind, werden trivialerweise wie folgt gelöst:
LWJGLX/debug ist ein Java-Agent, der viele dieser Probleme automatisch erkennt. Es kann auch ein Ablaufverfolgungsprotokoll erstellt werden, das beim Melden von Problemen an LWJGL hilfreich ist.
Wenn Sie um Hilfe bitten oder einen Fehler in LWJGL vermuten, erhöht die Vorbereitung eines MVCE (Minimal, Complete, and Verifiable example), das das Problem reproduziert, die Chancen auf eine schnelle und nützliche Antwort.
Bibliothek | Beschreibung |
---|---|
EGL | Eine Schnittstelle zwischen Khronos-Rendering-APIs wie OpenGL ES oder OpenVG und dem zugrunde liegenden nativen Plattformfenstersystem. |
KTX (Khronos-Textur) | Ein leichter Container für Texturen für OpenGL®, Vulkan® und andere GPU-APIs. |
OpenCL | Ein offener, gebührenfreier Standard für die plattformübergreifende, parallele Programmierung verschiedener Prozessoren, die in Personalcomputern, Servern, mobilen Geräten und eingebetteten Plattformen zu finden sind. |
OpenGL | Die branchenweit am weitesten verbreitete 2D- und 3D-Grafik-API bringt Tausende von Anwendungen auf eine Vielzahl von Computerplattformen. |
OpenGL ES | Eine lizenzfreie, plattformübergreifende API für voll funktionsfähige 2D- und 3D-Grafiken auf eingebetteten Systemen – einschließlich Konsolen, Telefonen, Geräten und Fahrzeugen. |
OpenXR | Ein lizenzfreier, offener Standard, der leistungsstarken Zugriff auf Augmented Reality (AR) und Virtual Reality (VR) – zusammen als XR bekannt – Plattformen und Geräte bietet. |
Vulkan | Eine Grafik- und Rechen-API der neuen Generation, die hocheffizienten, plattformübergreifenden Zugriff auf moderne GPUs bietet, die in einer Vielzahl von Geräten verwendet werden, von PCs und Konsolen bis hin zu Mobiltelefonen und eingebetteten Plattformen. |
Bibliothek | Beschreibung |
---|---|
GLFW | Erstellen Sie mehrere Fenster, verarbeiten Sie Benutzereingaben (Tastatur, Maus, Gaming-Peripheriegeräte) und verwalten Sie Kontexte. Bietet außerdem Unterstützung für mehrere Monitore, Zugriff auf die Zwischenablage, Drag-and-Drop für Dateien und vieles mehr. |
JAWT | Die native AWT-Schnittstelle. |
Nativer Dateidialog erweitert | Eine kleine C-Bibliothek, die portabel native Dialoge zum Öffnen von Dateien, zur Ordnerauswahl und zum Speichern von Dateien aufruft. |
tinyfd | Eine native Dialogbibliothek. |
Bibliothek | Beschreibung |
---|---|
FMOD | Eine End-to-End-Lösung zum Hinzufügen von Sound und Musik zu jedem Spiel. |
OpenAL | Eine plattformübergreifende 3D-Audio-API, die für die Verwendung mit Spieleanwendungen und vielen anderen Arten von Audioanwendungen geeignet ist. |
OpenAL Soft | Eine LGPL-lizenzierte, plattformübergreifende Softwareimplementierung der OpenAL 3D-Audio-API. |
Opus | Ein völlig offener, lizenzfreier und äußerst vielseitiger Audio-Codec. |
Bibliothek | Beschreibung |
---|---|
Assimp | Eine portable Open-Source-Bibliothek zum einheitlichen Import verschiedener bekannter 3D-Modellformate. |
bgfx | Plattformübergreifende, von der Grafik-API unabhängige Rendering-Bibliothek im „Bring Your Own Engine/Framework“-Stil, lizenziert unter der freizügigen Open-Source-Lizenz BSD-2. |
FreeType | Eine frei verfügbare Softwarebibliothek zum Rendern von Schriftarten. |
HarfBuzz | Eine Textformungsbibliothek, die es Programmen ermöglicht, eine Folge von Unicode-Eingaben in ordnungsgemäß formatierte und positionierte Glyphenausgaben umzuwandeln – für jedes Schriftsystem und jede Sprache. |
Meshoptimierer | Eine Netzoptimierungsbibliothek, die Netze kleiner und schneller renderbar macht. |
msdfgen | Ein Mehrkanal-Distanzfeldgenerator mit Vorzeichen. |
NanoSVG | Ein einfacher dummer SVG-Parser. |
NanoVG | Eine kleine Bibliothek zur Darstellung von Vektorgrafiken mit Antialiasing für OpenGL. |
Nuklear | Ein Toolkit für die grafische Benutzeroberfläche im Minimalstatus-Sofortmodus, das in ANSI C geschrieben und unter der Public Domain-Lizenz lizenziert ist. |
par_octasphere | Erzeugt Dreiecksnetze für Kugeln, abgerundete Kästchen und Kapseln. |
par_shapes | Erzeugen Sie parametrische Flächen und andere einfache Formen. |
par_streamlines | Triangulieren Sie breite Linien und Kurven. |
Shaderc | Eine Sammlung von Bibliotheken für die Shader-Kompilierung. |
SPIRV-Kreuz | Eine Bibliothek zur Reflexion von SPIR-V und zur Zerlegung von SPIR-V zurück in Hochsprachen. |
Winziges OpenEXR | Eine kleine Bibliothek nur mit einem Header zum Laden und Speichern von OpenEXR-Bildern (.exr). |
Tootle (AMD) | Eine Bibliothek zur Optimierung von 3D-Dreiecksnetzen, die bestehende Netzvorverarbeitungstechniken verbessert. |
Vulkan-Speicherzuweiser | Eine einfach zu integrierende Vulkan-Speicherzuweisungsbibliothek. |
Yoga | Eine plattformübergreifende Open-Source-Layoutbibliothek, die Flexbox implementiert. |
Bibliothek | Beschreibung |
---|---|
LibOVR | Die API des Oculus SDK. |
OpenVR | Eine API und Laufzeit, die den Zugriff auf VR-Hardware von mehreren Anbietern ermöglicht, ohne dass Anwendungen über spezifische Kenntnisse der Hardware verfügen müssen, auf die sie abzielen. |
Bibliothek | Beschreibung |
---|---|
stb_easy_font | Schnell und einfach zu implementierende Bitmap-Schriftart zum Drucken der Bildrate usw. |
stb_image | Laden/Dekodieren von Bildern aus Datei/Speicher: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |
stb_image_resize | Vergrößern/verkleinern Sie Bilder mit guter Qualität. |
stb_image_write | Bild auf Festplatte schreiben: PNG, TGA, BMP |
stb_perlin | Überarbeitetes Perlin-Rauschen (3D-Eingabe, 1D-Ausgabe). |
stb_rect_pack | Einfacher 2D-Rechteckpacker mit ordentlicher Qualität. |
stb_truetype | Analysieren, dekodieren und rastern Sie Zeichen aus TrueType-Schriftarten. |
stb_vorbis | Ogg-Vorbis-Dateien aus Datei/Speicher in Float/16-Bit-Ausgabe mit Vorzeichen dekodieren. |
Bibliothek | Beschreibung |
---|---|
CUDA | Eine von NVIDIA entwickelte Parallel-Computing-Plattform und ein Programmiermodell für allgemeines Computing auf GPUs. |
hwloc | Eine tragbare Abstraktion der hierarchischen Topologie moderner Architekturen, einschließlich NUMA-Speicherknoten, Sockets, gemeinsam genutzten Caches, Kernen und gleichzeitigem Multithreading. |
jemalloc | Eine Allzweck-Malloc-Implementierung, bei der die Vermeidung von Fragmentierung und die Unterstützung skalierbarer Parallelität im Vordergrund stehen. |
libffi | Eine portable High-Level-Programmierschnittstelle für verschiedene Aufrufkonventionen. |
libdivide | Eine Bibliothek, die teure Ganzzahldivisionen durch vergleichsweise kostengünstige Multiplikationen und Bitverschiebungen ersetzt. |
LLVM | Eine Sammlung modularer und wiederverwendbarer Compiler- und Toolchain-Technologien. |
LMDB | Eine außerordentlich schnelle, speichereffiziente Datenbank. Mit speicherzugeordneten Dateien verfügt es über die Leseleistung einer reinen In-Memory-Datenbank und behält gleichzeitig die Persistenz standardmäßiger festplattenbasierter Datenbanken bei. |
LZ4 | Ein verlustfreier Datenkomprimierungsalgorithmus, der sich auf die Komprimierungs- und Dekomprimierungsgeschwindigkeit konzentriert. |
Miau-Hash | Ein extrem schneller, nicht kryptografischer Hash. |
ODBC | AC-Programmiersprachenschnittstelle, die es Anwendungen ermöglicht, auf Daten aus einer Vielzahl von Datenbankverwaltungssystemen (DBMS) zuzugreifen. |
Fernbedienung | Ein Echtzeit-CPU/GPU-Profiler, der in einer einzelnen C-Datei mit einem Viewer gehostet wird, der in einem Webbrowser ausgeführt wird. |
rpmalloc | Ein öffentlich zugänglicher, plattformübergreifender, sperrfreier Thread-Caching-16-Byte-Speicherzuweiser, der in C implementiert ist. |
xxHash | Ein extrem schneller Hash-Algorithmus, der mit RAM-Geschwindigkeitsgrenzen läuft. |
Zstandard (zstd) | Ein schneller verlustfreier Komprimierungsalgorithmus, der auf Echtzeit-Komprimierungsszenarien auf Zlib-Ebene und bessere Komprimierungsraten abzielt. |
Die Nutzung einer Bindung unterliegt den Bedingungen der entsprechenden Lizenz.
LWJGL existiert dank aller Menschen, die zu unserem Kollektiv beitragen und spenden.