- LWJGL — это Lightweight Java Game Library, мост между Java и нативной графикой, аудио и вводом.
- Это набор тонких обёрток (OpenGL, OpenAL, GLFW и другие), а не одна библиотека.
- Стек окон, рендеринга и ввода Minecraft построен на LWJGL.
- Это библиотека, а не мод или загрузчик модов, и Minecraft уже включает её.
LWJGL — это Lightweight Java Game Library. Это мост, который позволяет Java-коду вызывать нативные API для графики, звука и ввода. Minecraft — это Java-игра, поэтому она использует LWJGL для взаимодействия с вашей GPU и звуковым оборудованием. Моды, отрисовывающие собственные интерфейсы или воспроизводящие звук, достигают этого же нативного уровня через него.
Где используется Opal
Opal — это мод для Fabric, поэтому он отрисовывается с использованием того же графического контекста LWJGL, который уже настроен в игре. Руководство по настройке содержит информацию о том, как запустить Opal.
Что на самом деле делает LWJGL
LWJGL предоставляет Java тонкий, прямой интерфейс к нативным C-библиотекам. Java сама по себе не может вызывать OpenGL или OpenAL; они написаны на C и находятся в операционной системе или драйвере. LWJGL поставляется с кодом привязки и нативными бинарными файлами, поэтому методы Java отображаются почти один к одному на базовые C-функции.
Интерфейс намеренно тонкий. LWJGL не скрывает OpenGL за сценой графа или движком. Вы пишете графический код, близкий к API, поэтому он популярен для игр, которые хотят контроля и предсказуемой производительности.
Что он привязывает
LWJGL — это набор привязок, а не единая библиотека. Компоненты, относящиеся к Minecraft и его модам, включают:
| Привязка | Для чего это нужно |
|---|---|
| OpenGL | Отрисовка на экране: API рендеринга, который использует игра |
| OpenAL | 3D-позиционное аудио |
| GLFW | Создание окна, игровой цикл и ввод с клавиатуры/мыши |
| stb | Вспомогательные средства для загрузки изображений и шрифтов |
| NanoVG | Антиализированная 2D-векторная отрисовка, используемая в некоторых фрагментах кода пользовательского интерфейса |
Каждая привязка является необязательной. Проект подключает только необходимые модули.
Почему Minecraft и его моды зависят от него
Вся стековая структура окон, рендеринга и ввода Minecraft построена на LWJGL. Когда игра открывает окно, считывает мышь или отправляет треугольники на GPU, этот вызов проходит через LWJGL к нативному слою.
Моды наследуют это. Мод, рисующий наложенный интерфейс в игре или пользовательское меню, использует тот же OpenGL-контекст, который был настроен игрой через LWJGL. Некоторые моды также отрисовывают свой интерфейс с помощью NanoVG, который сам по себе является одним из биндингов LWJGL. Эта общая основа является одной из причин, по которой один мод может отрисовываться вместе с игрой, не создавая собственную графическую систему.
Является ли LWJGL модом?
Нет. LWJGL — это библиотека, а не мод и не загрузчик модов. Вы не устанавливаете его так же, как устанавливаете мод. Minecraft уже включает в себя необходимую версию, а лаунчер загружает соответствующие нативные бинарные файлы для вашей операционной системы. Разработчики модов компилируют с использованием LWJGL, но редко распространяют свою собственную копию.
Часто задаваемые вопросы
Нет. Minecraft поставляется с необходимой версией, а лаунчер загружает родные файлы для вашей платформы. Игрокам почти никогда не приходится напрямую работать с LWJGL.
Это означает, что библиотека остается близкой к нативным API, вместо того чтобы оборачивать их в тяжелый движок. Вы получаете прямой доступ с минимальным количеством слоев между вашим кодом и оборудованием.
Нет. LWJGL — это общая Java-библиотека для игр, используемая во многих Java-играх и инструментах. Minecraft — самый известный проект, созданный на её основе, но он не привязан к Minecraft.
Любой язык, работающий на виртуальной машине Java, включая Java и Kotlin. Библиотека предоставляет Java API.