LWJGL 3 ships a comprehensive set of graphics-related bindings, covering everything from low-level GPU APIs like OpenGL and Vulkan to high-level helpers for font rendering, GUI layout, shader compilation, and image I/O. All bindings are optional modules that you add individually to your project.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/LWJGL/lwjgl3/llms.txt
Use this file to discover all available pages before exploring further.
The current stable release is 3.4.2. Use the LWJGL build configurator to generate Maven or Gradle dependency declarations for exactly the bindings you need.
Rendering APIs
These bindings expose the primary GPU rendering interfaces supported by LWJGL.| Binding | Artifact | Key Classes | Description |
|---|---|---|---|
| OpenGL | org.lwjgl:lwjgl-opengl | GL11–GL46, GLUtil | The most widely adopted 2D and 3D graphics API. LWJGL exposes every core and extension entry point via per-version classes (GL11 through GL46) and supports both compatibility and core profiles. |
| OpenGL ES | org.lwjgl:lwjgl-opengles | GLES20–GLES32 | Royalty-free, cross-platform API for full-function 2D and 3D graphics on embedded systems, including consoles, phones, and vehicles. |
| Vulkan | org.lwjgl:lwjgl-vulkan | VK10–VK14, VkInstance, VkDevice | Next-generation graphics and compute API providing high-efficiency, cross-platform access to modern GPUs. LWJGL covers the full Vulkan specification from 1.0 (VK10) through 1.4 (VK14). |
| bgfx | org.lwjgl:lwjgl-bgfx | BGFX, BGFXInit | Cross-platform, graphics-API-agnostic rendering library licensed under BSD-2-Clause. Abstracts over OpenGL, Vulkan, Metal, and Direct3D, making it suitable for “bring your own engine” workflows. |
Scene and Model Loading
Assimp
org.lwjgl:lwjgl-assimp — Assimp, AIScene, AIMeshA portable Open Source library to import various well-known 3D model formats (OBJ, FBX, glTF, Collada, and 40+ more) in a uniform manner. Use Assimp.aiImportFile() as the main entry point.meshoptimizer
org.lwjgl:lwjgl-meshoptimizer — MeshOptimizerA mesh optimization library that makes meshes smaller and faster to render by improving vertex cache locality, overdraw, and vertex fetch efficiency. Pair with Assimp for a full import-and-optimize pipeline.par shapes / octasphere / streamlines
org.lwjgl:lwjgl-par — ParShapes, ParOctasphere, ParStreamlinesThree related libraries from Philip Rideout: par_shapes for parametric mesh generation, par_octasphere for sphere/capsule/rounded-box meshes, and par_streamlines for triangulating wide lines and curves.NanoSVG
org.lwjgl:lwjgl-nanosvg — NanoSVG, NSVGImageA simple, lightweight SVG parser that rasterizes vector graphics into pixel buffers. Useful for loading SVG icons and UI assets at runtime without a full SVG engine dependency.Text and Font Rendering
| Binding | Artifact | Key Classes | Description |
|---|---|---|---|
| FreeType | org.lwjgl:lwjgl-freetype | FreeType, FTLibrary, FTFace | A widely used, freely available library to render fonts. Supports TrueType, OpenType, Type 1, and many other formats. FreeType handles outline scaling and hinting. |
| HarfBuzz | org.lwjgl:lwjgl-harfbuzz | HarfBuzz, HBBuffer, HBFont | A text shaping library that converts a sequence of Unicode code points into properly positioned glyph indices — handling ligatures, kerning, and right-to-left scripts. Typically used together with FreeType. |
| msdfgen | org.lwjgl:lwjgl-msdfgen | MSDFGen | A multi-channel signed distance field generator. Produces compact SDF textures from vector glyph outlines that render sharply at any scale on the GPU — a popular technique for resolution-independent text. |
| stb_truetype | org.lwjgl:lwjgl-stb | STBTruetype | Part of the stb collection. Parses, decodes, and rasterizes TrueType font glyphs with no external dependencies. Lower fidelity than FreeType but simpler to integrate. |
Vector Graphics and GUI
NanoVG
org.lwjgl:lwjgl-nanovg — NanoVG, NVGContextA small antialiased 2D vector graphics rendering library for OpenGL. Exposes a canvas-style API for drawing paths, gradients, images, and text. Ideal for in-game HUDs and tool overlays.Nuklear
org.lwjgl:lwjgl-nuklear — Nuklear, NkContext, NkPanelA minimal immediate-mode GUI toolkit written in ANSI C and released into the public domain. Nuklear handles input, layout, and widget rendering but delegates the actual draw calls to your own backend.Yoga
org.lwjgl:lwjgl-yoga — Yoga, YGNodeAn open-source, cross-platform Flexbox layout engine from Meta. Compute CSS Flexbox layouts from Java for custom UI systems without a full browser engine. Works well as a layout backend for Nuklear or NanoVG interfaces.Shader Tools
| Binding | Artifact | Key Classes | Description |
|---|---|---|---|
| Shaderc | org.lwjgl:lwjgl-shaderc | Shaderc, ShadercCompiler, ShadercCompileOptions | Google’s collection of libraries for shader compilation. Compiles GLSL and HLSL to SPIR-V at runtime or build time, with full include-handling and macro support. Required for dynamic Vulkan shader pipelines. |
| SPIRV-Cross | org.lwjgl:lwjgl-spvc | SPIRVCross, SpvcContext, SpvcCompiler | Performs reflection on SPIR-V binary and can cross-compile SPIR-V back to GLSL, HLSL, MSL, or ESSL. Use it to inspect uniform layouts or to target multiple graphics backends from a single SPIR-V source. |
Texture and Image Utilities
KTX (Khronos Texture)
org.lwjgl:lwjgl-ktx — KTXTexture, KTXTexture2A lightweight container format for GPU textures targeting OpenGL, Vulkan, and other GPU APIs. Supports compressed texture formats (ASTC, ETC, BC), mipmaps, and array/cube textures in a single file.Tiny OpenEXR
org.lwjgl:lwjgl-tinyexr — TinyEXRA small, header-only library for loading and saving OpenEXR (.exr) HDR images. Suitable for loading environment maps and HDR render targets used in physically-based rendering pipelines.Vulkan Memory Allocator
org.lwjgl:lwjgl-vma — Vma, VmaAllocator, VmaAllocationCreateInfoGPUOpen’s easy-to-integrate Vulkan memory allocation library. Automates suballocation, memory type selection, and defragmentation so you spend less time managing VkDeviceMemory handles directly.stb Libraries
Theorg.lwjgl:lwjgl-stb artifact bundles Sean Barrett’s collection of single-file, public-domain C libraries. All are accessed through the org.lwjgl.stb package.
stb_image — image loading
stb_image — image loading
Class:
STBImageDecodes images from file or memory in JPG, PNG, TGA, BMP, PSD, GIF, HDR, and PIC formats. The primary entry point for loading textures in LWJGL applications that don’t need a full media framework.stb_image_write — image writing
stb_image_write — image writing
Class:
STBImageWriteWrites PNG, TGA, BMP, and JPEG images to disk or a callback. Useful for screenshots and texture baking results.stb_image_resize — image resampling
stb_image_resize — image resampling
Class:
STBImageResizeResizes images to arbitrary dimensions with good quality using a configurable filter. Supports premultiplied alpha and sRGB color spaces.stb_truetype — font rasterization
stb_truetype — font rasterization
Class:
STBTruetypeParses TrueType font files and rasterizes glyphs to bitmaps. Simpler to set up than FreeType but with fewer hinting options.stb_vorbis — Ogg Vorbis decoding
stb_vorbis — Ogg Vorbis decoding
Class:
STBVorbisDecodes Ogg Vorbis audio files to raw float or 16-bit signed PCM. Can be used with OpenAL for streaming background music.stb_perlin — noise generation
stb_perlin — noise generation
Class:
STBPerlinProvides revised Perlin noise with 3D input and 1D output. Useful for terrain generation and procedural textures.stb_rect_pack — rectangle packing
stb_rect_pack — rectangle packing
Class:
STBRectPackA simple 2D rectangle packer for building texture atlases. Used internally by many font atlas implementations.stb_easy_font — debug font rendering
stb_easy_font — debug font rendering
Class:
STBEasyFontA quick-and-dirty bitmap font for printing frame rates and debug output directly to an OpenGL context.All stb libraries share a single Maven artifact —
org.lwjgl:lwjgl-stb. You do not need to add separate dependencies for each stb sub-library.