LWJGL (https://www.lwjgl.org) est une bibliothèque Java qui permet un accès multiplateforme aux API natives populaires utiles dans le développement d'applications graphiques (OpenGL/Vulkan), audio (OpenAL) et de calcul parallèle (OpenCL). Cet accès est direct et hautes performances, mais également enveloppé dans une couche de type sécurisé et conviviale, adaptée à l'écosystème Java.
LWJGL est une technologie habilitante et fournit un accès de bas niveau. Ce n'est pas un framework et ne fournit pas d'utilitaires de niveau supérieur à ceux exposés par les bibliothèques natives. En tant que tel, les programmeurs débutants sont encouragés à essayer l’un des frameworks ou moteurs de jeu utilisant LWJGL, avant de travailler directement avec la bibliothèque.
LWJGL est un logiciel open source et disponible gratuitement et gratuitement.
Liens utiles :
Contact:
Si vous souhaitez contribuer, consultez doc/README pour un aperçu rapide de la structure du projet, des instructions d'installation et des options de configuration.
Depuis la version 3.1.0
, LWJGL est distribué sous forme d'ensemble de modules. Seul le module principal est requis et toutes les liaisons sont facultatives (mais certaines liaisons dépendent d'autres liaisons). Le moyen le plus simple de télécharger LWJGL consiste à utiliser le configurateur de build sur le site Web.
Le configurateur de build génère des déclarations Maven & Gradle qui peuvent être ajoutées aux projets existants. C'est le moyen le plus simple d'utiliser LWJGL lors du développement.
LWJGL peut également être téléchargé sous la forme d'un simple ensemble de fichiers JAR. Chaque module est constitué des fichiers suivants :
Pour compiler et exécuter une application LWJGL, les fichiers JAR de base et natifs du module principal et chaque liaison utilisée doivent être ajoutés au chemin de classe. LWJGL extrait les natifs dans un dossier temporaire et les charge automatiquement, aucune configuration supplémentaire n'est donc nécessaire. Si davantage de personnalisation est requise (par exemple lors de la création d'un programme d'installation spécifique à la plate-forme), les natifs peuvent être extraits manuellement et chargés via java.library.path
. Voir la classe Configuration pour plus d'options.
LWJGL 3 nécessite Java 8 ou version ultérieure pour être construit et exécuté et prend actuellement en charge les plates-formes/architectures suivantes :
Exemple de code :
Pour migrer le code LWJGL 2 vers LWJGL 3, consultez le Guide de migration.
Les problèmes les plus courants rencontrés par les utilisateurs de LWJGL sont résolus de manière triviale avec les éléments suivants :
LWJGLX/debug est un agent Java qui détectera automatiquement un grand nombre de ces problèmes. Il peut également générer un journal de trace utile pour signaler des problèmes à LWJGL.
Lorsque vous demandez de l'aide ou lorsque vous soupçonnez un bug dans LWJGL, préparer un MVCE (exemple minimal, complet et vérifiable) qui reproduit le problème améliorera les chances d'une réponse rapide et utile.
Bibliothèque | Description |
---|---|
EGL | Une interface entre les API de rendu Khronos telles que OpenGL ES ou OpenVG et le système de fenêtres de plateforme natif sous-jacent. |
KTX (Texture Khronos) | Un conteneur léger pour les textures pour OpenGL®, Vulkan® et autres API GPU. |
OpenCL | Une norme ouverte et libre de droits pour la programmation parallèle multiplateforme de divers processeurs présents dans les ordinateurs personnels, les serveurs, les appareils mobiles et les plates-formes embarquées. |
OpenGL | L'API graphique 2D et 3D la plus largement adoptée dans l'industrie, apportant des milliers d'applications à une grande variété de plates-formes informatiques. |
OpenGL ES | Une API multiplateforme libre de droits pour des graphiques 2D et 3D complets sur les systèmes embarqués, notamment les consoles, les téléphones, les appareils électroménagers et les véhicules. |
OuvertXR | Une norme ouverte et libre de droits qui fournit un accès hautes performances aux plates-formes et appareils de réalité augmentée (AR) et de réalité virtuelle (VR), collectivement connus sous le nom de XR. |
Vulcan | Une API graphique et de calcul de nouvelle génération qui fournit un accès multiplateforme haute efficacité aux GPU modernes utilisés dans une grande variété d'appareils, des PC et consoles aux téléphones mobiles et plates-formes embarquées. |
Bibliothèque | Description |
---|---|
GLFW | Créez plusieurs fenêtres, gérez les entrées des utilisateurs (clavier, souris, périphériques de jeu) et gérez les contextes. Comprend également la prise en charge de plusieurs moniteurs, l'accès au presse-papiers, le glisser-déposer de fichiers et bien plus encore. |
JAWT | L'interface native d'AWT. |
Boîte de dialogue de fichier natif étendue | Une petite bibliothèque C qui appelle de manière portable les boîtes de dialogue natives d'ouverture de fichier, de sélection de dossier et d'enregistrement de fichier. |
minusculefd | Une bibliothèque de dialogue native. |
Bibliothèque | Description |
---|---|
FMOD | Une solution de bout en bout pour ajouter du son et de la musique à n'importe quel jeu. |
OuvertAL | Une API audio 3D multiplateforme adaptée à une utilisation avec des applications de jeux et de nombreux autres types d'applications audio. |
OpenAL Soft | Une implémentation logicielle multiplateforme sous licence LGPL de l'API audio 3D OpenAL. |
Opus | Un codec audio totalement ouvert, libre de droits et très polyvalent. |
Bibliothèque | Description |
---|---|
Assimp | Une bibliothèque Open Source portable pour importer divers formats de modèles 3D bien connus de manière uniforme. |
bgfx | Multiplateforme, indépendante de l'API graphique, bibliothèque de rendu de style « Bring Your Own Engine/Framework », sous licence open source permissive avec clause BSD-2. |
Type libre | Une bibliothèque de logiciels disponible gratuitement pour restituer les polices. |
HarfBuzz | Une bibliothèque de mise en forme de texte qui permet aux programmes de convertir une séquence d'entrées Unicode en sortie de glyphes correctement formatée et positionnée, pour n'importe quel système d'écriture et langage. |
optimiseur de maillage | Une bibliothèque d'optimisation de maillage qui rend les maillages plus petits et plus rapides à restituer. |
msdfgen | Un générateur de champ de distance signé multicanal. |
NanoSVG | Un simple analyseur SVG stupide. |
NanoVG | Une petite bibliothèque de rendu de graphiques vectoriels anticrénelés pour OpenGL. |
Nucléaire | Une boîte à outils d'interface utilisateur graphique en mode immédiat à état minimal écrite en ANSI C et sous licence dans le domaine public. |
par_octasphère | Génère des maillages triangulaires pour les sphères, les boîtes arrondies et les capsules. |
par_shapes | Générez des surfaces paramétriques et d'autres formes simples. |
par_streamlines | Triangulez les lignes et les courbes larges. |
Shaderc | Une collection de bibliothèques pour la compilation de shaders. |
SPIRV-Croix | Une bibliothèque pour effectuer une réflexion sur SPIR-V et désassembler SPIR-V en langages de haut niveau. |
Petit OpenEXR | Une petite bibliothèque d'en-tête unique pour charger et enregistrer des images OpenEXR (.exr). |
Tootle (AMD) | Une bibliothèque d'optimisation de maillage triangulaire 3D qui améliore les techniques de prétraitement de maillage existantes. |
Allocateur de mémoire Vulkan | Une bibliothèque d'allocation de mémoire Vulkan facile à intégrer. |
Yoga | Une bibliothèque de mise en page open source multiplateforme qui implémente Flexbox. |
Bibliothèque | Description |
---|---|
LibOVR | L'API du SDK Oculus. |
OuvertVR | Une API et un environnement d'exécution qui permettent d'accéder au matériel VR de plusieurs fournisseurs sans exiger que les applications aient une connaissance spécifique du matériel qu'elles ciblent. |
Bibliothèque | Description |
---|---|
stb_easy_font | Police bitmap rapide et facile à déployer pour l'impression de la fréquence d'images, etc. |
image_stb | Chargement/décodage d'images à partir d'un fichier/mémoire : JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC |
stb_image_resize | Redimensionnez les images plus grandes/plus petites avec une bonne qualité. |
stb_image_write | Écriture d'images sur disque : PNG, TGA, BMP |
stb_perlin | Bruit Perlin révisé (entrée 3D, sortie 1D). |
stb_rect_pack | Emballeur rectangulaire 2D simple avec une qualité décente. |
stb_truetype | Analysez, décodez et rastérisez les caractères des polices TrueType. |
stb_vorbis | Décodez les fichiers ogg vorbis du fichier/mémoire en sortie signée float/16 bits. |
Bibliothèque | Description |
---|---|
CUDA | Une plate-forme de calcul parallèle et un modèle de programmation développés par NVIDIA pour le calcul général sur GPU. |
hwloc | Une abstraction portable de la topologie hiérarchique des architectures modernes, comprenant les nœuds de mémoire NUMA, les sockets, les caches partagés, les cœurs et le multithreading simultané. |
jemalloc | Une implémentation malloc à usage général qui met l’accent sur l’évitement de la fragmentation et la prise en charge évolutive de la concurrence. |
libffi | Une interface de programmation portable de haut niveau pour diverses conventions d'appel. |
libdivide | Une bibliothèque qui remplace les divisions entières coûteuses par des multiplications et des décalages de bits relativement bon marché. |
LLVM | Une collection de technologies de compilateur et de chaîne d'outils modulaires et réutilisables. |
BDLM | Une base de données extraordinairement rapide et économe en mémoire. Avec les fichiers mappés en mémoire, il offre les performances de lecture d'une base de données en mémoire pure tout en conservant la persistance des bases de données sur disque standard. |
LZ4 | Un algorithme de compression de données sans perte axé sur la vitesse de compression et de décompression. |
Miaou hachage | Un hachage non cryptographique extrêmement rapide. |
ODBC | Interface de langage de programmation AC qui permet aux applications d'accéder aux données d'une variété de systèmes de gestion de bases de données (SGBD). |
Télécommande | Un profileur CPU/GPU en temps réel hébergé dans un seul fichier C avec une visionneuse qui s'exécute dans un navigateur Web. |
RPMalloc | Un allocateur de mémoire aligné sur 16 octets avec mise en cache de threads sans verrouillage multiplateforme du domaine public implémenté en C. |
xxHash | Un algorithme de hachage extrêmement rapide, fonctionnant aux limites de vitesse de la RAM. |
Zstandard (zstd) | Un algorithme de compression rapide sans perte, ciblant des scénarios de compression en temps réel au niveau zlib et de meilleurs taux de compression. |
L'utilisation d'une liaison est soumise aux termes de la licence correspondante.
LWJGL existe grâce à toutes les personnes qui contribuent et font des dons à notre collectif.