LWJGL (https://www.lwjgl.org) es una biblioteca Java que permite el acceso multiplataforma a API nativas populares útiles en el desarrollo de aplicaciones de gráficos (OpenGL/Vulkan), audio (OpenAL) y computación paralela (OpenCL). Este acceso es directo y de alto rendimiento, pero también está envuelto en una capa de tipo seguro y fácil de usar, apropiada para el ecosistema Java.
LWJGL es una tecnología habilitadora y proporciona acceso de bajo nivel. No es un marco y no proporciona utilidades de nivel superior a las que exponen las bibliotecas nativas. Como tal, se anima a los programadores novatos a probar uno de los marcos o motores de juegos que utilizan LWJGL, antes de trabajar directamente con la biblioteca.
LWJGL es un software de código abierto y está disponible gratuitamente y sin coste alguno.
Enlaces útiles:
Contacto:
Si desea contribuir, consulte doc/README para obtener una descripción general rápida de la estructura del proyecto, instrucciones de instalación y opciones de configuración.
A partir de la versión 3.1.0
, LWJGL se distribuye como un conjunto de módulos. Solo se requiere el módulo principal y todos los enlaces son opcionales (pero algunos enlaces dependen de otros enlaces). La forma más sencilla de descargar LWJGL es utilizar el configurador de compilación en el sitio web.
El configurador de compilación genera declaraciones de Maven y Gradle que se pueden agregar a proyectos existentes. Esta es la forma más sencilla de utilizar LWJGL durante el desarrollo.
LWJGL también se puede descargar como un conjunto simple de archivos JAR. Cada módulo consta de los siguientes archivos:
Para compilar y ejecutar una aplicación LWJGL, los archivos JAR base y nativos del módulo principal y cada enlace utilizado deben agregarse al classpath. LWJGL extrae los nativos a una carpeta temporal y los carga automáticamente, por lo que no es necesaria ninguna configuración adicional. Si se requiere más personalización (por ejemplo, al crear un instalador específico de la plataforma), los nativos se pueden extraer manualmente y cargar a través de java.library.path
. Consulte la clase de Configuración para obtener más opciones.
LWJGL 3 requiere Java 8 o posterior para compilarse y ejecutarse y actualmente admite las siguientes plataformas/arquitecturas:
Código de ejemplo:
Para migrar el código LWJGL 2 a LWJGL 3, consulte la Guía de migración.
Los problemas más comunes que enfrentan los usuarios de LWJGL se abordan trivialmente con lo siguiente:
LWJGLX/debug es un agente Java que detectará automáticamente muchos de estos problemas. También puede generar un registro de seguimiento que resulta útil a la hora de informar problemas a LWJGL.
Cuando solicite ayuda o cuando sospeche de un error en LWJGL, preparar un MVCE (ejemplo mínimo, completo y verificable) que reproduzca el problema mejorará las posibilidades de una respuesta rápida y útil.
Biblioteca | Descripción |
---|---|
EGL | Una interfaz entre las API de renderizado de Khronos, como OpenGL ES u OpenVG, y el sistema de ventanas de la plataforma nativa subyacente. |
KTX (Textura Khronos) | Un contenedor liviano para texturas para OpenGL®, Vulkan® y otras API de GPU. |
OpenCL | Un estándar abierto y libre de regalías para la programación paralela y multiplataforma de diversos procesadores que se encuentran en computadoras personales, servidores, dispositivos móviles y plataformas integradas. |
OpenGL | La API de gráficos 2D y 3D más adoptada en la industria, que ofrece miles de aplicaciones a una amplia variedad de plataformas informáticas. |
OpenGL ES | Una API multiplataforma libre de regalías para gráficos 2D y 3D con todas las funciones en sistemas integrados, incluidas consolas, teléfonos, electrodomésticos y vehículos. |
AbiertoXR | Un estándar abierto y libre de regalías que brinda acceso de alto rendimiento a plataformas y dispositivos de Realidad Aumentada (AR) y Realidad Virtual (VR), conocidas colectivamente como XR. |
vulcano | Una API de computación y gráficos de nueva generación que brinda acceso multiplataforma de alta eficiencia a GPU modernas utilizadas en una amplia variedad de dispositivos, desde PC y consolas hasta teléfonos móviles y plataformas integradas. |
Biblioteca | Descripción |
---|---|
GLFW | Cree múltiples ventanas, maneje la entrada del usuario (teclado, mouse, periféricos de juegos) y administre contextos. También cuenta con soporte para múltiples monitores, acceso al portapapeles, arrastrar y soltar archivos y mucho más. |
JAWT | La interfaz nativa de AWT. |
Cuadro de diálogo de archivo nativo ampliado | Una pequeña biblioteca C que invoca de forma portátil cuadros de diálogo nativos para abrir archivos, seleccionar carpetas y guardar archivos. |
diminuto | Una biblioteca de diálogo nativa. |
Biblioteca | Descripción |
---|---|
FMOD | Una solución integral para agregar sonido y música a cualquier juego. |
AbiertoAL | Una API de audio 3D multiplataforma adecuada para usar con aplicaciones de juegos y muchos otros tipos de aplicaciones de audio. |
OpenAL suave | Una implementación de software multiplataforma con licencia LGPL de la API de audio 3D OpenAL. |
Opus | Un códec de audio totalmente abierto, libre de derechos y muy versátil. |
Biblioteca | Descripción |
---|---|
asimp | Una biblioteca portátil de código abierto para importar varios formatos de modelos 3D conocidos de manera uniforme. |
bgfx | Biblioteca de renderizado de estilo "Traiga su propio motor/marco", API de gráficos multiplataforma, independiente, con licencia de código abierto con cláusula permisiva BSD-2. |
Tipo libre | Una biblioteca de software disponible gratuitamente para representar fuentes. |
HarfBuzz | Una biblioteca de configuración de texto que permite a los programas convertir una secuencia de entrada Unicode en una salida de glifo correctamente formateada y posicionada, para cualquier sistema de escritura y lenguaje. |
meshoptimizador | Una biblioteca de optimización de mallas que hace que las mallas sean más pequeñas y más rápidas de renderizar. |
msdfgen | Un generador de campo de distancia firmado multicanal. |
NanoSVG | Un simple y estúpido analizador SVG. |
NanoVG | Una pequeña biblioteca de renderizado de gráficos vectoriales antialias para OpenGL. |
nuclear | Un kit de herramientas de interfaz gráfica de usuario en modo inmediato de estado mínimo escrito en ANSI C y con licencia de dominio público. |
par_octasfera | Genera mallas triangulares para esferas, cajas redondeadas y cápsulas. |
formas_par | Genera superficies paramétricas y otras formas simples. |
par_streamlines | Triangula líneas y curvas anchas. |
sombreador | Una colección de bibliotecas para la compilación de sombreadores. |
SPIRV-Cruz | Una biblioteca para realizar reflexión sobre SPIR-V y desensamblar SPIR-V en lenguajes de alto nivel. |
Pequeño OpenEXR | Una pequeña biblioteca de solo encabezado para cargar y guardar imágenes OpenEXR(.exr). |
Tootle (AMD) | Una biblioteca de optimización de mallas triangulares 3D que mejora las técnicas de preprocesamiento de mallas existentes. |
Asignador de memoria Vulkan | Una biblioteca de asignación de memoria Vulkan fácil de integrar. |
Yoga | Una biblioteca de diseño multiplataforma de código abierto que implementa Flexbox. |
Biblioteca | Descripción |
---|---|
libovr | La API del SDK de Oculus. |
AbiertoVR | Una API y un tiempo de ejecución que permite el acceso a hardware de realidad virtual de múltiples proveedores sin necesidad de que las aplicaciones tengan conocimientos específicos del hardware al que se dirigen. |
Biblioteca | Descripción |
---|---|
stb_easy_font | Fuente de mapa de bits rápida, sencilla y fácil de implementar para imprimir velocidad de fotogramas, etc. |
imagen_stb | Carga/decodificación de imágenes desde archivo/memoria: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |
stb_image_resize | Cambie el tamaño de las imágenes a mayor o menor tamaño con buena calidad. |
stb_image_write | Escritura de imágenes en disco: PNG, TGA, BMP |
stb_perlin | Ruido Perlin revisado (entrada 3D, salida 1D). |
stb_rect_pack | Empaquetador rectangular 2D simple con calidad decente. |
stb_truetype | Analiza, decodifica y rasteriza caracteres de fuentes truetype. |
stb_vorbis | Decodifica archivos ogg vorbis desde archivo/memoria a salida flotante/con signo de 16 bits. |
Biblioteca | Descripción |
---|---|
CUDA | Una plataforma informática paralela y un modelo de programación desarrollado por NVIDIA para la informática general en GPU. |
hwloc | Una abstracción portátil de la topología jerárquica de las arquitecturas modernas, incluidos nodos de memoria NUMA, sockets, cachés compartidos, núcleos y subprocesos múltiples simultáneos. |
jemalloc | Una implementación de malloc de propósito general que enfatiza la evitación de fragmentación y el soporte de concurrencia escalable. |
libfi | Una interfaz de programación portátil de alto nivel para diversas convenciones de llamadas. |
libdivide | Una biblioteca que reemplaza las costosas divisiones de enteros con multiplicaciones y cambios de bits comparativamente baratos. |
LVM | Una colección de tecnologías de cadena de herramientas y compiladores modulares y reutilizables. |
LMDB | Una base de datos extraordinariamente rápida y con un uso eficiente de la memoria. Con archivos asignados en memoria, tiene el rendimiento de lectura de una base de datos puramente en memoria y al mismo tiempo conserva la persistencia de las bases de datos estándar basadas en disco. |
LZ4 | Un algoritmo de compresión de datos sin pérdidas que se centra en la velocidad de compresión y descompresión. |
Hachís de maullido | Un hash no criptográfico extremadamente rápido. |
ODBC | Interfaz de lenguaje de programación AC que permite que las aplicaciones accedan a datos desde una variedad de sistemas de administración de bases de datos (DBMS). |
remoto | Un generador de perfiles de CPU/GPU en tiempo real alojado en un único archivo C con un visor que se ejecuta en un navegador web. |
rpmalloc | Un asignador de memoria alineada de 16 bytes de almacenamiento en caché de subprocesos sin bloqueo multiplataforma de dominio público implementado en C. |
xxHash | Un algoritmo Hash extremadamente rápido que se ejecuta a límites de velocidad de RAM. |
Estándar Z (zstd) | Un algoritmo de compresión rápido sin pérdidas, dirigido a escenarios de compresión en tiempo real a nivel zlib y mejores relaciones de compresión. |
El uso de una encuadernación está sujeto a los términos de la licencia correspondiente.
LWJGL existe gracias a todas las personas que aportan y donan a nuestro colectivo.