- LWJGL è la Lightweight Java Game Library, un ponte tra Java e la grafica, l'audio e l'input nativi.
- È una raccolta di binding leggeri (OpenGL, OpenAL, GLFW e altro ancora), non una singola libreria.
- Lo stack delle finestre, del rendering e dell'input di Minecraft si basa tutti su LWJGL.
- È una libreria, non una mod o un mod loader, e Minecraft la include già.
LWJGL è la Lightweight Java Game Library. È il ponte che permette al codice Java di chiamare le API native per grafica, audio e input. Minecraft è un gioco Java, quindi utilizza LWJGL per comunicare con la GPU e l'hardware audio. I mod che disegnano interfacce personalizzate o riproducono suoni raggiungono lo stesso livello nativo tramite esso.
Dove si integra Opal
Opal è un mod Fabric, quindi viene renderizzato tramite lo stesso contesto grafico LWJGL già impostato dal gioco. La guida all'installazione spiega come avviare Opal.
Cosa fa realmente LWJGL
LWJGL fornisce a Java un wrapper sottile e diretto attorno alle librerie C native. Java di per sé non può chiamare OpenGL o OpenAL; questi sono scritti in C e risiedono nel sistema operativo o nel driver. LWJGL include il codice di binding e i binari nativi in modo che i metodi Java si mappino quasi uno a uno sulle funzioni C sottostanti.
Il wrapper è intenzionalmente sottile. LWJGL non nasconde OpenGL dietro un grafo della scena o un motore. Scrivi codice grafico vicino all'API, motivo per cui è popolare tra i giochi che desiderano controllo e prestazioni prevedibili.
A cosa si lega
LWJGL è una collezione di binding piuttosto che una singola libreria. I componenti rilevanti per Minecraft e i suoi mod includono:
| Binding | A cosa serve |
|---|---|
| OpenGL | Disegno sullo schermo: l'API di rendering utilizzata dal gioco |
| OpenAL | Audio posizionale 3D |
| GLFW | Creazione della finestra, il game loop e l'input da tastiera/mouse |
| stb | Utilità per il caricamento di immagini e font |
| NanoVG | Disegno vettoriale 2D anti-aliased, utilizzato da alcuni codici UI |
Ogni binding è opzionale. Un progetto include solo i moduli di cui ha bisogno.
Perché Minecraft e i suoi mod si basano su di esso
L'intero stack di finestre, rendering e input di Minecraft si basa su LWJGL. Quando il gioco apre una finestra, legge il mouse o invia triangoli alla GPU, quella chiamata passa attraverso LWJGL al livello nativo.
I mod ereditano questo. Un mod che disegna un overlay di gioco o un menu personalizzato utilizza lo stesso contesto OpenGL impostato dal gioco tramite LWJGL. Alcuni mod disegnano anche la loro interfaccia con NanoVG, che a sua volta è uno dei binding di LWJGL. Quella base condivisa è parte del motivo per cui un singolo mod può renderizzare insieme al gioco senza dover creare un proprio sistema grafico.
LWJGL è un mod?
No. LWJGL è una libreria, non un mod e non un mod loader. Non lo installi come faresti con un mod. Minecraft include già la versione necessaria e il launcher scarica i binari nativi corrispondenti per il tuo sistema operativo. Gli sviluppatori di mod compilano con LWJGL ma raramente distribuiscono una propria copia.
FAQ
No. Minecraft include la versione necessaria e il launcher scarica i file nativi per la tua piattaforma. I giocatori raramente interagiscono direttamente con LWJGL.
Significa che la libreria rimane vicina alle API native invece di avvolgerle in un motore pesante. Si ottiene l'accesso diretto con pochissimo tra il tuo codice e l'hardware.
No. LWJGL è una libreria Java generica utilizzata da molti giochi e strumenti Java. Minecraft è il progetto più noto basato su di essa, ma non è legato a Minecraft.
Qualsiasi linguaggio che funzioni sulla Java Virtual Machine, inclusi Java e Kotlin. I binding sono esposti come API Java.