- LWJGL to Lightweight Java Game Library, mostek między Javą a natywną grafiką, dźwiękiem i wejściem.
- Jest to zbiór cienkich bibliotek (OpenGL, OpenAL, GLFW i inne), a nie jedna biblioteka.
- Okno, render i stos wejścia Minecrafta oparte są na LWJGL.
- Jest to biblioteka, a nie mod lub ładowacz modów, a Minecraft już ją dołącza.
LWJGL to Lekka Biblioteka Gier Java. To most, który umożliwia kodowi Java wywoływanie natywnych interfejsów API do obsługi grafiki, dźwięku i wejścia. Minecraft jest grą Java, więc korzysta z LWJGL do komunikacji z GPU i sprzętem dźwiękowym. Modyfikacje, które rysują niestandardowe interfejsy lub odtwarzają dźwięk, docierają do tej samej warstwy natywnej za jego pomocą.
Gdzie pasuje Opal
Opal jest modem dla Fabric, więc renderuje za pomocą tego samego kontekstu graficznego LWJGL, który gra już skonfigurowała. Przewodnik konfiguracji opisuje, jak uruchomić Opal.
Czym właściwie zajmuje się LWJGL
LWJGL zapewnia cienki, bezpośredni interfejs dla natywnych bibliotek C w Javie. Sama Java nie może wywoływać OpenGL ani OpenAL; te są napisane w C i znajdują się w systemie operacyjnym lub sterowniku. LWJGL zawiera kod wiążący i natywne biblioteki, dzięki czemu metody Javy mapują się niemal jeden do jednego na podstawowe funkcje C.
Interfejs jest celowo cienki. LWJGL nie ukrywa OpenGL za pomocą sceny graficznej ani silnika. Piszesz kod graficzny blisko API, dlatego jest popularny w grach, które wymagają kontroli i przewidywalnej wydajności.
Do czego służy
LWJGL to zbiór wiązań, a nie pojedyncza biblioteka. Elementy istotne dla Minecrafta i jego modów to:
| Wiązanie | Do czego służy |
|---|---|
| OpenGL | Rysowanie na ekranie: API renderowania, którego używa gra |
| OpenAL | 3D dźwięk pozycyjny |
| GLFW | Tworzenie okien, pętla gry oraz obsługa klawiatury/myszy |
| stb | Pomocniki do ładowania obrazów i czcionek |
| NanoVG | Antyaliasingowe rysowanie wektorowe 2D, używane przez niektóre kody UI |
Każde wiązanie jest opcjonalne. Projekt pobiera tylko moduły, których potrzebuje.
Dlaczego Minecraft i jego mody na nim polegają
Cała warstwa okien, renderowania i obsługi danych wejściowych w Minecrafcie opiera się na LWJGL. Kiedy gra otwiera okno, odczytuje ruch myszy lub wysyła trójkąty do GPU, wywołanie przechodzi przez LWJGL do warstwy natywnej.
Mody dziedziczą to. Mod, który rysuje nakładkę w grze lub niestandardowe menu, korzysta z tego samego kontekstu OpenGL, który gra skonfigurowała za pomocą LWJGL. Niektóre mody rysują również swój interfejs za pomocą NanoVG, które samo w sobie jest jednym z wiązań LWJGL. Ta wspólna podstawa jest częścią tego, dlaczego pojedynczy mod może renderować obok gry bez konieczności tworzenia własnego systemu graficznego.
Czy LWJGL jest modem?
Nie. LWJGL to biblioteka, a nie mod i nie loader modów. Nie instalujesz go tak, jak instalujesz moda. Minecraft już dołącza wersję, której potrzebuje, a launcher pobiera pasujące natywne binaria dla Twojego systemu operacyjnego. Deweloperzy modów kompilują z wykorzystaniem LWJGL, ale rzadko wysyłają własną kopię.
FAQ
Nie. Minecraft zawiera wersję, której potrzebuje, a launcher pobiera natywne pliki dla Twojej platformy. Gracze prawie nigdy nie manipulują LWJGL bezpośrednio.
Oznacza to, że biblioteka pozostaje blisko natywnych API, zamiast je otaczać ciężkim silnikiem. Zyskujesz bezpośredni dostęp z minimalną warstwą pomiędzy Twoim kodem a sprzętem.
Nie. LWJGL to ogólna biblioteka Java do gier, wykorzystywana przez wiele gier i narzędzi Java. Minecraft jest najbardziej znanym projektem opartym na niej, ale nie jest z nią związany.
Dowolny język działający na Maszynie Wirtualnej Javy, w tym Java i Kotlin. Powiązania są udostępniane jako API Java.