LWJGL, the Light Weight Java Game Library, is a low level game framework for Java layered over top of libraries such as OpenGL, CL, AL and Vulkan. It has been used by a number of game engines including LibGDX and jMonkeyEngine to provide performant cross platform 3D support in Java. LWJGL just released version 3.1, updating several of the underlying bindings, making various improvements and several bug fixes.
From the release notes:
Bindings
- Bindings have been split into modules and are available as separate artifacts. (#100)
- The download configurator on the website can be used to customize LWJGL builds and Maven/Gradle projects.
- Added LMDB bindings.
- Added Nuklear bindings. (#101)
- Added Tiny File Dialogs bindings.
- Added bgfx bindings. (#240)
- Added support for new EGL, OpenCL, OpenGL, OpenGL ES and Vulkan extensions.
- Updated all bindings to latest versions.
- Vulkan javadoc is now almost identical to the Vulkan man pages, with links to the online Vulkan specification.
Improvements
- Generator: Removed buffer object binding checks. (#197)
- Generator: Added support for mapping
byte/short
parameters toint
.- Generator: Added support for
va_list
parameters.- Generator: Reduced bytecode size of generated methods.
- Generator: The Vulkan bindings are now automatically generated.
- Optimized
strlen
methods used internally by LWJGL.- Optimized misaligned
memSet
andmemCopy
.- Added support for stack allocations with custom alignment.
- Removed allocation functionality from read-only, externally managed structs.
- Improved library loading diagnostics and added
Configuration.DEBUG_LOADER
option.- Libraries extracted by the
SharedLibraryLoader
are now locked to avoid conflicts with other processes (e.g. antivirus software). (#225)- Simplified javadoc of unsafe versions.
Fixes
- Callback instances are now tracked when the
DEBUG_MEMORY_ALLOCATOR
option is enabled.- Fixed
realloc
tracking in the debug allocator.- Shared libraries that ship with LWJGL are now always preferred over system libraries.
- Fixed return type of functions that return pointer to boolean.
- stb_image: Fixed result auto-sizing of
stbi_load*
functions.- Functions that deallocate memory no longer have Java array overloads.
- Fixed
memSet
bugs.- Fixed Java array overload generation for functions with multiple auto-size-result parameters.
- Fixed custom checks in Java array overloads.
- Fixed lookup of Critical JNI natives on Windows x86.
- Disabled Critical JNI natives for functions affected by JDK-8167409 on Linux & MacOS.
Breaking Changes
- xxHash: Added support for stack allocation of streaming hash state. Opaque handles have been replaced by the
XXH*State
structs.- NanoVG: Dropped version suffixes from NanoVGGL classes.
- Mapped more integer parameters and return values to Java booleans, that were missed while working on #181.
- Dropped VKUtil class and moved the version macros to VK10.
The LWJGL project is open source and available on Github here.