- LWJGL ist die Lightweight Java Game Library, eine Brücke von Java zu nativen Grafiken, Audio und Eingabe.
- Es handelt sich um eine Sammlung schlanker Bindungen (OpenGL, OpenAL, GLFW und mehr), nicht um eine einzelne Bibliothek.
- Minecrafts Fenster-, Render- und Eingabestapel basieren alle auf LWJGL.
- Es ist eine Bibliothek, kein Mod oder Mod-Loader, und Minecraft enthält sie bereits.
LWJGL ist die Lightweight Java Game Library. Sie ist die Brücke, die es Java-Code ermöglicht, native APIs für Grafik, Audio und Eingabe aufzurufen. Minecraft ist ein Java-Spiel und nutzt daher LWJGL, um mit Ihrer GPU und Soundhardware zu kommunizieren. Mods, die eigene Oberflächen zeichnen oder Sound abspielen, erreichen dieselbe native Schicht darüber.
Wo Opal passt
Opal ist ein Fabric Mod, sodass es über denselben LWJGL-Grafikkontext gerendert wird, den das Spiel bereits eingerichtet hat. Der Einrichtungsleitfaden behandelt, wie man Opal zum Laufen bringt.
Was LWJGL tatsächlich tut
LWJGL bietet Java eine schlanke, direkte Schnittstelle zu nativen C-Bibliotheken. Java kann OpenGL oder OpenAL nicht eigenständig aufrufen; diese sind in C geschrieben und im Betriebssystem oder Treiber vorhanden. LWJGL liefert den Bindungscode und die nativen Binärdateien, sodass Java-Methoden nahezu eins zu eins auf die zugrunde liegenden C-Funktionen abgebildet werden.
Die Schnittstelle ist bewusst schlank gehalten. LWJGL verbirgt OpenGL nicht hinter einem Szenengraphen oder einer Engine. Sie schreiben Grafikcode in direkter Nähe zur API, weshalb es bei Spielen beliebt ist, die Kontrolle und vorhersehbare Leistung wünschen.
Was es bindet
LWJGL ist eine Sammlung von Bindungen und keine einzelne Bibliothek. Die für Minecraft und seine Mods relevanten Komponenten umfassen:
| Binding | Wofür es verwendet wird |
|---|---|
| OpenGL | Zeichnen auf dem Bildschirm: die Rendering-API, die das Spiel verwendet |
| OpenAL | 3D-Positionsaudio |
| GLFW | Fenstererstellung, die Spielschleife und Tastatur-/Maus-Eingabe |
| stb | Hilfsprogramme zum Laden von Bildern und Schriftarten |
| NanoVG | Anti-aliased 2D-Vektorgrafik, verwendet von einigen UI-Code-Elementen |
Jede Bindung ist optional. Ein Projekt zieht nur die benötigten Module ein.
Warum Minecraft und seine Mods darauf angewiesen sind
Minecrafts gesamter Fenster-, Render- und Eingabestapel basiert auf LWJGL. Wenn das Spiel ein Fenster öffnet, die Maus liest oder Dreiecke an die GPU schickt, geht dieser Aufruf über LWJGL zur nativen Ebene.
Mods erben das. Ein Mod, der eine In-Game-Überlagerung oder ein benutzerdefiniertes Menü zeichnet, verwendet denselben OpenGL-Kontext, den das Spiel über LWJGL eingerichtet hat. Einige Mods verwenden auch NanoVG zum Zeichnen ihrer Oberfläche, welches selbst eine von LWJGL bereitgestellte Bindung ist. Diese gemeinsame Grundlage ist ein Grund dafür, dass ein einzelner Mod neben dem Spiel gerendert werden kann, ohne sein eigenes Grafiksystem aufzubauen.
Ist LWJGL ein Mod?
Nein. LWJGL ist eine Bibliothek, kein Mod und auch kein Mod-Loader. Du installierst es nicht so, wie du einen Mod installierst. Minecraft enthält bereits die benötigte Version, und der Launcher lädt die passenden nativen Binärdateien für dein Betriebssystem herunter. Mod-Entwickler kompilieren gegen LWJGL, versenden aber selten eine eigene Kopie.
FAQ
Nein. Minecraft wird mit der benötigten Version ausgeliefert, und der Launcher lädt die nativen Dateien für Ihr System herunter. Spieler greifen fast nie direkt auf LWJGL zu.
Es bedeutet, dass die Bibliothek nahe an den nativen APIs bleibt, anstatt sie in eine schwere Engine einzubinden. Sie erhalten direkten Zugriff mit sehr wenig Zwischenschicht zwischen Ihrem Code und der Hardware.
Nein. LWJGL ist eine allgemeine Java-Spielbibliothek, die von vielen Java-Spielen und -Tools verwendet wird. Minecraft ist das bekannteste Projekt, das darauf basiert, aber es ist nicht an Minecraft gebunden.
Jede Sprache, die auf der Java Virtual Machine läuft, einschließlich Java und Kotlin. Die Bindungen werden als Java-APIs bereitgestellt.