LWJGL (https://www.lwjgl.org) é uma biblioteca Java que permite acesso multiplataforma a APIs nativas populares, úteis no desenvolvimento de aplicativos gráficos (OpenGL/Vulkan), áudio (OpenAL) e computação paralela (OpenCL). Esse acesso é direto e de alto desempenho, mas também envolto em uma camada de tipo seguro e fácil de usar, apropriada para o ecossistema Java.
LWJGL é uma tecnologia facilitadora e fornece acesso de baixo nível. Não é uma estrutura e não fornece utilitários de nível superior aos expostos pelas bibliotecas nativas. Como tal, os programadores novatos são encorajados a experimentar um dos frameworks ou motores de jogo que fazem uso do LWJGL, antes de trabalharem diretamente com a biblioteca.
LWJGL é um software de código aberto e disponível gratuitamente.
Links úteis:
Contato:
Se você quiser contribuir, consulte doc/README para uma rápida visão geral da estrutura do projeto, instruções de instalação e opções de configuração.
A partir da versão 3.1.0
, o LWJGL é distribuído como um conjunto de módulos. Somente o módulo principal é necessário e todas as ligações são opcionais (mas algumas ligações dependem de outras ligações). A maneira mais fácil de baixar o LWJGL é usar o configurador de compilação no site.
O configurador de compilação gera declarações Maven e Gradle que podem ser adicionadas a projetos existentes. Esta é a maneira mais fácil de usar LWJGL durante o desenvolvimento.
LWJGL também pode ser baixado como um conjunto simples de arquivos JAR. Cada módulo consiste nos seguintes arquivos:
Para compilar e executar um aplicativo LWJGL, os arquivos JAR base e nativos do módulo principal e cada ligação usada devem ser adicionados ao caminho de classe. LWJGL extrai os nativos para uma pasta temporária e os carrega automaticamente, portanto nenhuma configuração adicional é necessária. Se for necessária mais personalização (por exemplo, ao criar um instalador específico da plataforma), os nativos podem ser extraídos manualmente e carregados via java.library.path
. Veja a classe Configuration para mais opções.
LWJGL 3 requer Java 8 ou posterior para construir e executar e atualmente suporta as seguintes plataformas/arquiteturas:
Código de exemplo:
Para migrar o código LWJGL 2 para LWJGL 3, consulte o Guia de migração.
Os problemas mais comuns enfrentados pelos usuários do LWJGL são resolvidos trivialmente com o seguinte:
LWJGLX/debug é um agente Java que detectará automaticamente muitos desses problemas. Ele também pode gerar um log de rastreamento útil ao relatar problemas ao LWJGL.
Ao pedir ajuda ou suspeitar de um bug no LWJGL, preparar um MVCE (exemplo mínimo, completo e verificável) que reproduza o problema aumentará as chances de uma resposta rápida e útil.
Biblioteca | Descrição |
---|---|
EGL | Uma interface entre APIs de renderização Khronos, como OpenGL ES ou OpenVG, e o sistema de janelas da plataforma nativa subjacente. |
KTX (Textura Khronos) | Um contêiner leve para texturas para OpenGL®, Vulkan® e outras APIs de GPU. |
OpenCL | Um padrão aberto e isento de royalties para programação paralela e multiplataforma de diversos processadores encontrados em computadores pessoais, servidores, dispositivos móveis e plataformas incorporadas. |
OpenGL | A API gráfica 2D e 3D mais amplamente adotada na indústria, trazendo milhares de aplicativos para uma ampla variedade de plataformas de computador. |
OpenGL ES | Uma API multiplataforma isenta de royalties para gráficos 2D e 3D com funções completas em sistemas embarcados - incluindo consoles, telefones, eletrodomésticos e veículos. |
OpenXR | Um padrão aberto e isento de royalties que fornece acesso de alto desempenho a plataformas e dispositivos de Realidade Aumentada (AR) e Realidade Virtual (VR) — conhecidas coletivamente como XR. |
Vulcano | Uma API gráfica e de computação de nova geração que fornece acesso multiplataforma de alta eficiência a GPUs modernas usadas em uma ampla variedade de dispositivos, desde PCs e consoles até telefones celulares e plataformas incorporadas. |
Biblioteca | Descrição |
---|---|
GLFW | Crie várias janelas, controle a entrada do usuário (teclado, mouse, periféricos de jogos) e gerencie contextos. Também oferece suporte para vários monitores, acesso à área de transferência, arrastar e soltar arquivos e muito mais. |
JAWT | A interface nativa do AWT. |
Caixa de diálogo de arquivo nativo estendida | Uma pequena biblioteca C que invoca de forma portável caixas de diálogo nativas para abrir arquivos, selecionar pastas e salvar arquivos. |
minúsculofd | Uma biblioteca de diálogo nativa. |
Biblioteca | Descrição |
---|---|
FMOD | Uma solução completa para adicionar som e música a qualquer jogo. |
OpenAL | Uma API de áudio 3D multiplataforma apropriada para uso com aplicativos de jogos e muitos outros tipos de aplicativos de áudio. |
OpenAL Soft | Uma implementação de software multiplataforma e licenciada pela LGPL da API de áudio OpenAL 3D. |
obra | Um codec de áudio totalmente aberto, isento de royalties e altamente versátil. |
Biblioteca | Descrição |
---|---|
Assimp | Uma biblioteca portátil de código aberto para importar vários formatos de modelos 3D conhecidos de maneira uniforme. |
bgfx | Biblioteca de renderização de estilo “Bring Your Own Engine/Framework”, independente de API gráfica, licenciada sob licença de código aberto permissiva da cláusula BSD-2. |
Tipo Livre | Uma biblioteca de software disponível gratuitamente para renderizar fontes. |
HarfBuzz | Uma biblioteca de modelagem de texto que permite aos programas converter uma sequência de entrada Unicode em uma saída de glifo devidamente formatada e posicionada — para qualquer sistema de escrita e linguagem. |
meshoptimizador | Uma biblioteca de otimização de malha que torna as malhas menores e mais rápidas de renderizar. |
msdfgen | Um gerador de campo de distância sinalizado multicanal. |
NanoSVG | Um analisador SVG simples e estúpido. |
NanoVG | Uma pequena biblioteca de renderização de gráficos vetoriais suavizados para OpenGL. |
Nuclear | Um kit de ferramentas de interface gráfica com o usuário de modo imediato de estado mínimo escrito em ANSI C e licenciado sob domínio público. |
par_octasfera | Gera malhas triangulares para esferas, caixas arredondadas e cápsulas. |
par_shapes | Gere superfícies paramétricas e outras formas simples. |
par_streamlines | Triangule linhas largas e curvas. |
Shaderc | Uma coleção de bibliotecas para compilação de shaders. |
SPIRV-Cruz | Uma biblioteca para realizar reflexão no SPIR-V e desmontar o SPIR-V de volta para linguagens de alto nível. |
Pequeno OpenEXR | Uma pequena biblioteca apenas de cabeçalho para carregar e salvar imagens OpenEXR (.exr). |
Tootle (AMD) | Uma biblioteca de otimização de malha triangular 3D que aprimora as técnicas existentes de pré-processamento de malha. |
Alocador de memória Vulkan | Uma biblioteca de alocação de memória Vulkan fácil de integrar. |
Ioga | Uma biblioteca de layout de plataforma cruzada de código aberto que implementa Flexbox. |
Biblioteca | Descrição |
---|---|
LibOVR | A API do SDK do Oculus. |
OpenVR | Uma API e um tempo de execução que permitem acesso ao hardware de VR de vários fornecedores sem exigir que os aplicativos tenham conhecimento específico do hardware ao qual estão direcionados. |
Biblioteca | Descrição |
---|---|
stb_easy_font | Fonte de bitmap rápida e fácil de implantar para impressão de taxa de quadros, etc. |
stb_image | Carregamento/decodificação de imagens de arquivo/memória: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |
stb_image_resize | Redimensione imagens maiores/menores com boa qualidade. |
stb_image_write | Gravação de imagem em disco: PNG, TGA, BMP |
stb_perlin | Ruído Perlin revisado (entrada 3D, saída 1D). |
stb_rect_pack | Compactador retangular 2D simples com qualidade decente. |
stb_truetype | Analise, decodifique e rasterize caracteres de fontes TrueType. |
stb_vorbis | Decodifique arquivos ogg vorbis de arquivo/memória para saída flutuante/assinada de 16 bits. |
Biblioteca | Descrição |
---|---|
CUDA | Uma plataforma de computação paralela e modelo de programação desenvolvido pela NVIDIA para computação geral em GPUs. |
hwloc | Uma abstração portátil da topologia hierárquica das arquiteturas modernas, incluindo nós de memória NUMA, soquetes, caches compartilhados, núcleos e multithreading simultâneo. |
jemalloc | Uma implementação malloc de uso geral que enfatiza a prevenção da fragmentação e o suporte à simultaneidade escalável. |
libffi | Uma interface de programação portátil e de alto nível para diversas convenções de chamada. |
libdivide | Uma biblioteca que substitui divisões inteiras caras por multiplicações e mudanças de bits comparativamente baratas. |
LLVM | Uma coleção de compiladores modulares e reutilizáveis e tecnologias de conjunto de ferramentas. |
LMDB | Um banco de dados extraordinariamente rápido e com uso eficiente de memória. Com arquivos mapeados na memória, ele tem o desempenho de leitura de um banco de dados puro na memória, mantendo a persistência dos bancos de dados padrão baseados em disco. |
LZ4 | Um algoritmo de compactação de dados sem perdas focado na velocidade de compactação e descompactação. |
Miau hash | Um hash não criptográfico extremamente rápido. |
ODBC | Interface de linguagem de programação AC que possibilita que aplicativos acessem dados de uma variedade de sistemas de gerenciamento de banco de dados (SGBDs). |
Controle remoto | Um criador de perfil de CPU/GPU em tempo real hospedado em um único arquivo C com um visualizador que é executado em um navegador da web. |
rpmalloc | Um alocador de memória alinhado de 16 bytes com cache de thread livre de bloqueio de plataforma cruzada de domínio público implementado em C. |
xxHash | Um algoritmo Hash extremamente rápido, rodando nos limites de velocidade da RAM. |
Zpadrão (zstd) | Um algoritmo de compactação rápido e sem perdas, visando cenários de compactação em tempo real no nível zlib e melhores taxas de compactação. |
O uso de uma vinculação está sujeito aos termos da licença correspondente.
A LWJGL existe graças a todas as pessoas que contribuem e doam para o nosso coletivo.