LWJGL (https://www.lwjgl.org) — это библиотека Java, обеспечивающая кросс-платформенный доступ к популярным собственным API-интерфейсам, полезным при разработке графических (OpenGL/Vulkan), аудио (OpenAL) и приложений параллельных вычислений (OpenCL). Этот доступ является прямым и высокопроизводительным, но в то же время он заключен в типобезопасный и удобный для пользователя уровень, соответствующий экосистеме Java.
LWJGL — это передовая технология, обеспечивающая низкоуровневый доступ. Это не фреймворк, и он не предоставляет утилит более высокого уровня, чем те, которые предоставляют собственные библиотеки. Таким образом, начинающим программистам рекомендуется попробовать одну из инфраструктур или игровых движков, использующих LWJGL, прежде чем работать непосредственно с библиотекой.
LWJGL — это программное обеспечение с открытым исходным кодом, которое доступно бесплатно и бесплатно.
Полезные ссылки:
Контакт:
Если вы хотите внести свой вклад, см. документ/README для быстрого обзора структуры проекта, инструкций по установке и параметров конфигурации.
Начиная с версии 3.1.0
, LWJGL распространяется в виде набора модулей. Требуется только основной модуль, а все привязки являются необязательными (но некоторые привязки зависят от других привязок). Самый простой способ загрузить LWJGL — использовать конфигуратор сборки на веб-сайте.
Конфигуратор сборки генерирует объявления Maven и Gradle , которые можно добавлять в существующие проекты. Это самый простой способ использовать LWJGL при разработке.
LWJGL также можно загрузить в виде простого набора файлов JAR. Каждый модуль состоит из следующих файлов:
Чтобы скомпилировать и запустить приложение LWJGL, в путь к классам следует добавить базовые и собственные файлы JAR основного модуля и каждую используемую привязку. LWJGL извлекает встроенные файлы во временную папку и загружает их автоматически, поэтому дальнейшая настройка не требуется. Если требуется дополнительная настройка (например, при создании установщика для конкретной платформы), нативные файлы можно извлечь вручную и загрузить через java.library.path
. Дополнительные параметры см. в классе Configuration.
Для сборки и запуска LWJGL 3 требуется Java 8 или более поздняя версия, и в настоящее время он поддерживает следующие платформы/архитектуры:
Пример кода:
Для миграции кода LWJGL 2 в LWJGL 3 см. Руководство по миграции.
Наиболее распространенные проблемы, с которыми сталкиваются пользователи LWJGL, тривиально решаются следующим образом:
LWJGLX/debug — это Java-агент, который автоматически обнаруживает многие из этих проблем. Он также может генерировать журнал трассировки, который полезен при сообщении о проблемах в LWJGL.
При обращении за помощью или при подозрении на ошибку в LWJGL подготовка MVCE (минимального, полного и проверяемого примера), воспроизводящего проблему, повысит шансы на быстрый и полезный ответ.
Библиотека | Описание |
---|---|
ЭГЛ | Интерфейс между API-интерфейсами рендеринга Khronos, такими как OpenGL ES или OpenVG, и базовой оконной системой собственной платформы. |
KTX (текстура Хроноса) | Легкий контейнер для текстур для OpenGL®, Vulkan® и других API графических процессоров. |
OpenCL | Открытый, бесплатный стандарт для кроссплатформенного параллельного программирования различных процессоров, используемых в персональных компьютерах, серверах, мобильных устройствах и встроенных платформах. |
OpenGL | Самый широко распространенный в отрасли API 2D- и 3D-графики, обеспечивающий тысячи приложений для самых разных компьютерных платформ. |
OpenGL ES | Бесплатный кроссплатформенный API для полнофункциональной 2D- и 3D-графики во встроенных системах, включая консоли, телефоны, бытовую технику и транспортные средства. |
OpenXR | Бесплатный открытый стандарт, обеспечивающий высокопроизводительный доступ к платформам и устройствам дополненной реальности (AR) и виртуальной реальности (VR) — под общим названием XR. |
Вулкан | Графический и вычислительный API нового поколения, обеспечивающий высокоэффективный кроссплатформенный доступ к современным графическим процессорам, используемым в самых разных устройствах: от ПК и консолей до мобильных телефонов и встроенных платформ. |
Библиотека | Описание |
---|---|
ГЛФВ | Создавайте несколько окон, обрабатывайте ввод пользователя (клавиатура, мышь, игровая периферия) и управляйте контекстами. Также имеется поддержка нескольких мониторов, доступ к буферу обмена, перетаскивание файлов и многое другое. |
ЯВТ | Собственный интерфейс AWT. |
Расширенное собственное диалоговое окно файла | Небольшая библиотека C, которая переносимо вызывает собственные диалоги открытия файлов, выбора папки и сохранения файлов. |
Tinyfd | Собственная библиотека диалогов. |
Библиотека | Описание |
---|---|
ФМОД | Комплексное решение для добавления звука и музыки в любую игру. |
ОпенАЛ | Межплатформенный API 3D-аудио, подходящий для использования с игровыми приложениями и многими другими типами аудиоприложений. |
OpenAL Софт | Кроссплатформенная программная реализация OpenAL 3D audio API под лицензией LGPL. |
Опус | Полностью открытый, бесплатный и универсальный аудиокодек. |
Библиотека | Описание |
---|---|
Ассимп | Портативная библиотека с открытым исходным кодом для единообразного импорта различных известных форматов 3D-моделей. |
bgfx | Кроссплатформенная, независимая от графического API библиотека рендеринга в стиле «Принеси свой собственный движок/фреймворк», лицензируемая в соответствии с разрешительной лицензией с открытым исходным кодом BSD-2. |
FreeType | Свободно доступная библиотека программного обеспечения для рендеринга шрифтов. |
ХарфБузз | Библиотека формирования текста, которая позволяет программам преобразовывать последовательность входных данных Unicode в правильно отформатированные и позиционированные выходные данные — для любой системы письма и языка. |
оптимизатор сетки | Библиотека оптимизации сеток, которая делает сетки меньше и ускоряет их рендеринг. |
мсдфген | Многоканальный знаковый генератор поля расстояния. |
НаноСВГ | Простой дурацкий парсер SVG. |
НаноВГ | Небольшая библиотека рендеринга векторной графики со сглаживанием для OpenGL. |
Нуклеар | Набор инструментов графического пользовательского интерфейса с минимальным состоянием в немедленном режиме, написанный на ANSI C и лицензированный как общественное достояние. |
пар_октасфера | Создает треугольные сетки для сфер, закругленных коробок и капсул. |
пар_формы | Создавайте параметрические поверхности и другие простые формы. |
par_streamlines | Триангулируйте широкие линии и кривые. |
Шадерк | Коллекция библиотек для компиляции шейдеров. |
СПИРВ-Кросс | Библиотека для анализа SPIR-V и дизассемблирования SPIR-V обратно в языки высокого уровня. |
Крошечный OpenEXR | Небольшая библиотека с одним заголовком для загрузки и сохранения изображений OpenEXR(.exr). |
Тутл (AMD) | Библиотека оптимизации 3D-треугольной сетки, которая улучшает существующие методы предварительной обработки сетки. |
Распределитель памяти Вулкан | Простая в интеграции библиотека распределения памяти Vulkan. |
Йога | Кроссплатформенная библиотека макетов с открытым исходным кодом, реализующая Flexbox. |
Библиотека | Описание |
---|---|
ЛибОВР | API Oculus SDK. |
OpenVR | API и среда выполнения, которые обеспечивают доступ к оборудованию VR от нескольких поставщиков, не требуя от приложений специальных знаний об оборудовании, на которое они нацелены. |
Библиотека | Описание |
---|---|
stb_easy_font | Быстрый и простой в развертывании растровый шрифт для печати частоты кадров и т. д. |
stb_image | Загрузка/декодирование изображений из файла/памяти: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC. |
stb_image_resize | Изменяйте размер изображений больше/меньше с хорошим качеством. |
stb_image_write | Запись изображения на диск: PNG, TGA, BMP. |
stb_perlin | Пересмотренный шум Перлина (3D-вход, 1D-выход). |
stb_rect_pack | Простой 2D-упаковщик прямоугольников приличного качества. |
stb_truetype | Анализируйте, декодируйте и растрируйте символы из шрифтов TrueType. |
stb_vorbis | Декодирование файлов ogg vorbis из файла/памяти в вывод с плавающей запятой/16-битный знак. |
Библиотека | Описание |
---|---|
КУДА | Платформа параллельных вычислений и модель программирования, разработанная NVIDIA для общих вычислений на графических процессорах. |
hwloc | Переносимая абстракция иерархической топологии современных архитектур, включая узлы памяти NUMA, сокеты, общие кэши, ядра и одновременную многопоточность. |
Джемаллок | Реализация malloc общего назначения, в которой особое внимание уделяется предотвращению фрагментации и поддержке масштабируемого параллелизма. |
либффи | Портативный интерфейс программирования высокого уровня для различных соглашений о вызовах. |
либделить | Библиотека, которая заменяет дорогостоящие целочисленные деления сравнительно дешевыми умножениями и битовыми сдвигами. |
ЛЛВМ | Коллекция модульных и многократно используемых технологий компилятора и инструментальных средств. |
ЛМДБ | Необычайно быстрая база данных с эффективным использованием памяти. При использовании файлов, отображаемых в памяти, он имеет производительность чтения чистой базы данных в памяти, сохраняя при этом постоянство стандартных дисковых баз данных. |
LZ4 | Алгоритм сжатия данных без потерь, ориентированный на скорость сжатия и распаковки. |
Мяу-хеш | Чрезвычайно быстрый некриптографический хэш. |
ОДБК | Интерфейс языка программирования AC, который позволяет приложениям получать доступ к данным из различных систем управления базами данных (СУБД). |
Удаленность | Профилировщик CPU/GPU в реальном времени, размещенный в одном файле C со средством просмотра, запускаемым в веб-браузере. |
Rpmalloc | Общедоступный кроссплатформенный распределитель памяти с 16-байтовым выровненным потоком и кэшированием без блокировок, реализованный на языке C. |
ххХэш | Чрезвычайно быстрый алгоритм хеширования, работающий с ограничениями скорости оперативной памяти. |
Zстандарт (zstd) | Быстрый алгоритм сжатия без потерь, предназначенный для сценариев сжатия в реальном времени на уровне zlib и лучших коэффициентов сжатия. |
Использование привязки регулируется условиями соответствующей лицензии.
LWJGL существует благодаря всем людям, которые вносят свой вклад и делают пожертвования нашему коллективу.