LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan, bgfx), audio (OpenAL, Opus), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR, OpenXR) applications.
BSD-3-CLAUSE License
Bot releases are hidden (Show)
Changes since 3.3.3:
GLFW_UNLIMITED_MOUSE_BUTTONS
, GLFW_SCALE_FRAMEBUFFER
, GLFW_WIN32_SHOWDEFAULT
.glfwGetWindowTitle
, glfwGetCocoaView
.GLFW_SOFT_FULLSCREEN
, GLFW_IME
, GLFW_MANAGE_PREEDIT_CANDIDATE
and GLFW_X11_ONTHESPOT
.glfwGetPreeditCursorRectangle
, glfwSetPreeditCursorRectangle
, glfwResetPreeditText
, glfwGetPreeditCandidate
.glfwSetPreeditCallback
, glfwSetIMEStatusCallback
, glfwSetPreeditCandidateCallback
.stb_image
to 2.30 (up from 2.28)stb_image_resize
to 2.09 (up from 0.97)freebsd
linux-ppc64le
linux-riscv64
VkMemoryRequirements
mutable for the vmaAllocateMemory(Pages)
functions. (#937)SharedLibraryLoader
will now always test if System::load
works before choosing the extract path. (#987)bgfx_is_frame_buffer_valid
to accept BGFXAttachment.Buffer
. (#993)JAWT_MACOSX_USE_CALAYER
value.LLVMGetBufferStart
to return ByteBuffer
instead of String
. (#934)LookupIntrinsicID
to return unsigned
instead of void
. (#950)nk_stroke_polyline
, nk_stroke_polygon
, nk_fill_polygon
buffers. (#978)aDefaultPath
parameter of tinyfd_selectFolderDialog
is now nullable. (#922)stb_image_resize2.h
replaced stb_image_resize.h
with a new API.Published by Spasi about 1 year ago
Changes since 3.3.2:
EGL_EXT_gl_colorspace_bt2020_hlg
Configuration.NFD_LINUX_PORTAL
which enables the XDG Desktop Portal backend on Linux. (#893)AL_SOFT_buffer_length_query
extension.AL_SOFT_source_start_delay
extension.AL_SOFT_UHJ_ex
extension.cl_ext_image_from_buffer
cl_ext_image_requirements_info
cl_intel_bfloat16_conversions
cl_intel_split_work_group_barrier
cl_intel_subgroup_matrix_multiply_accumulate
cl_intel_subgroup_split_matrix_multiply_accumulate
GL_NV_uniform_buffer_std430_layout
memset
/memcpy
implementations no longer touch memory outside the target range. (#892)nk_font_atlas_bake
. (#903)libGLX.so.0
before libGL.so.1
on Linux, matching GLFW.Configuration.OPENGL_LIBRARY_NAME
and GLFWNativeGLX::setPath
to override this behavior.Published by Spasi over 1 year ago
Changes since 3.3.1:
Configuration.HARFBUZZ_LIBRARY_NAME
).dpapi.h
. (#851)KHR_draco_mesh_compression
is now supported via the bundled Draco library. (#773)GLFW_WAYLAND_LIBDECOR
, GLFW_WAYLAND_PREFER_LIBDECOR
and GLFW_WAYLAND_DISABLE_LIBDECOR
.GLFW_CURSOR_CAPTURED
.GLFW_WAYLAND_APP_ID
.GLFW_POSITION_X
, GLFW_POSITION_Y
and GLFW_ANY_POSITION
.ALC_SOFT_loopback_bformat
extension.ALC_SOFT_output_mode
extension.ALC_SOFT_reopen_device
extension.AL_SOFT_callback_buffer
extension.AL_SOFT_effect_target
extension.AL_SOFT_events
extension. (#854)AL_SOFT_UHJ
extension.AL_SOFTX_hold_on_disconnect
extension. (#795)GL_EXT_framebuffer_blit_layers
GL_EXT_fragment_shading_rate
GL_EXT_fragment_shading_rate_attachment
GL_EXT_fragment_shading_rate_primitive
GL_EXT_separate_depth_stencil
GL_EXT_shader_samples_identical
stb_image
to 2.28 (up from 2.27)MemoryUtil::memByteBuffer(Struct)
. It creates a ByteBuffer
view of a struct value.SharedLibraryLoader
improvements. (#790)
Configuration.SHARED_LIBRARY_EXTRACT_DIRECTORY
is now lwjgl_<trimmed_user_name>
.Configuration.SHARED_LIBRARY_EXTRACT_PATH
now includes the CPU architecture. (<temp_root>/<extract_dir>/<version>/<arch>/
)Configuration.SHARED_LIBRARY_EXTRACT_FORCE
.Version::getVersion()
now follows the Java version format (M.m.r+B
or M.m.r-snapshot+B
).Configuration.DEBUG_MEMORY_ALLOCATOR_FAST
, a dynamic option that dramatically reduces the performance overhead of memory leak detection.Configuration.DEBUG_STACK
..sha1
and .git
files, used for validating LWJGL artifacts, are now stored under the META-INF
folder.glfwUpdateGamepadMappings
can be used to update the mappings at runtime.NK_BUTTON_TRIGGER_ON_RELEASE
is now also defined on Linux & macOS, not only Windows, for consistency.Remotery
class javadoc.vis/index.html
is guaranteed to be compatible with the LWJGL bindings.modules/samples/src/test/java/org/lwjgl/demo/util/remotery/
).dlerror
decoding to use UTF-8. (#738)Version::getVersion()
when LWJGL is in the module path. (#770)NSVGPath::pts
buffer.pcm
parameter type of opus_decode_float
function. (#785)rmtSettings::free
callback signature.stb_image_resize
flag values. (#857)VK_API_VERSION_PATCH
macro. (#743)EXT_debug_utils
function dispatch. (#755)org.lwjgl.system.JNI
method names for 8/16-bit integer parameters. (#858) (S)freeData
parameters of nvgCreateFontMem*
functions are now mapped to Java boolean
. (S)NkConvertConfig::null_texture
to tex_null
to match the change in the native API. (S)(B): binary incompatible change
(S): source incompatible change
Published by Spasi over 2 years ago
Changes since 3.3.0:
org.lwjgl.system.linux.liburing
).glfwGetGLXFBConfig
.glfwGetEGLConfig
.VMA_MEMORY_USAGE_AUTO
.glfwInit
is called.Configuration.GLFW_LIBRARY_NAME.set("glfw_async");
.NUL
in string returned from SharedLibrary::getPath()
on Linux & macOS. (#713)NPE
with Configuration.DEBUG_STACK
enabled. (#721)KERNEL_ARG_ADDRESS_*
constants. (#733)KERNEL_ARG_TYPE_QUALIFIER
constant. (#735)VmaVirtualAllocationCreateInfo::pUserData
member.noautovalidity
parameters/members are now regarded as nullable. (#702)Published by Spasi almost 3 years ago
Changes since 3.2.3
:
org.lwjgl.system
package.GLFW_WIN32_KEYBOARD_MENU
.GLFW_CURSOR_UNAVAILABLE
.GLFW_FEATURE_UNAVAILABLE
.GLFW_FEATURE_UNIMPLEMENTED
.GLFW_MOUSE_PASSTHROUGH
.GLFW_ANGLE_PLATFORM_TYPE
.GLFW_CONTEXT_DEBUG
.GLFW_X11_XCB_VULKAN_SURFACE
.GLFW_PLATFORM
, GLFW_PLATFORM_UNAVAILABLE
.GLFW_ANY_PLATFORM
, GLFW_PLATFORM_WIN32
, GLFW_PLATFORM_COCOA
, GLFW_PLATFORM_WAYLAND
, GLFW_PLATFORM_X11
, GLFW_PLATFORM_NULL
.glfwInitAllocator
.glfwGetPlatform
.glfwPlatformSupported
.glfwInitVulkanLoader
.AL_SOFT_bformat_ex
extension.AL_SOFT_buffer_samples
extension.AL_SOFT_buffer_sub_data
extension.AL_SOFT_direct_channels_remix
extension.stb_dxt
to 1.12 (up from 1.08)stb_easy_font
to 1.1 (up from 1.0)stb_image
to 2.27 (up from 2.23)stb_image_resize
to 0.97 (up from 0.96)stb_image_write
to 1.16 (up from 1.13)stb_perlin
to 0.5 (up from 0.4)stb_rect_pack
to 1.01 (up from 1.00)stb_truetype
to 1.26 (up from 1.22)stb_vorbis
to 1.22 (up from 1.17)natives-macos-arm64
natives-windows-arm64
Layout
section) and in the javadoc of the corresponding setter and .Buffer
accessors.Struct
classes.
malloc
and calloc
, without a "Stack" suffix.3.4.0
.SharedLibraryLoader
now prefers to extract natives to the working directory, over the user's home directory.invoke
method, for better IDE navigation.GLFWNativeEGL.setEGLPath
& GLFWNativeEGL.setGLESPath
GLFWNativeGLX.setPath
GLFWNativeNSGL.setFramework
GLFWNativeWGL.setPath
GLFWVulkan.setPath
glfwPlatformSupported(GLFW_PLATFORM_WAYLAND)
to test if Wayland is available.glfwInitHint(GLFW_PLATFORM, GLFW_PLATFORM_WAYLAND)
to enable the Wayland backend.createCapabilities
overloads that accept an IntFunction<PointerBuffer>
. Enables explicit management of the off-heap memory used by the capabilities instances.Configuration
options to forcibly disable specific extensions for debugging purposes. (#683)ALC::setCapabilities
. Rarely useful when opening multiple devices with different ALC capabilities. (#582)sType
setter that writes the appropriate struct type value. (#537)pNext
setters, one for each struct type that is known to extend them.
pNext
chain, enabling cleaner code when chaining multiple structs.pNext
calls.malloc
ed, make sure to call .pNext(NULL)
first, otherwise the last struct in the chain will point to invalid memory.MemoryUtil
setup code. (#632)SharedLibraryLoader
now prepends a .
to SHARED_LIBRARY_EXTRACT_DIRECTORY
when the target directory is not temporary.SharedLibraryLoader
will now load libraries in the correct ClassLoader
when testing for JDK-8195129. (#648)dlopen
paths to UTF-8. (#691)cuIpcOpenEventHandle
/cuIpcOpenMemHandle
using libFFI.eglInitialize
arguments.GLFW_CHECK_THREAD0
to false
is now required for offscreen interop. (#538)errcode_ret
parameter to clLinkProgram
. (#560)GL_TEXTURE
in the core profile. (#573)GetQueryObject*
functions.stb_image_resize
overloads. (#605)vkGetInstanceProcAddr
to work with null
instance arguments.VK_VERSION_MAJOR
and VK_VERSION_MINOR
macros.(B): binary incompatible change
(S): source incompatible change
VK10
. (S)Published by Spasi about 5 years ago
Changes since 3.2.2
:
EGL_NV_stream_dma
.GL_EXT_multiview_tessellation_geometry_shader
GL_EXT_multiview_texture_multisample
GL_EXT_multiview_timer_query
GL_EXT_texture_shadow_lod
GL_EXT_texture_sRGB_R8
GL_KHR_shader_subgroup
GL_NV_shader_subgroup_partitioned
GL_NVX_gpu_multicast2
GL_NVX_progress_fence
par_shapes
to latest version.
par_shapes_create_cone
.stb_image
to 2.23 (up from 2.22)stb_truetype
to 1.22 (up from 1.21)stb_vorbis
to 1.17 (up from 1.16)linux-arm32
linux-arm64
windows
lwjgl-natives-windows-x86.jar
contains x86 shared libraries only. Maven classifier: windows-x86
32
suffix has been dropped from x86 shared library names.lwjgl-bom
). (#481)
<platform>/<arch>/<module>/
subfolder.
<platform>
: one of linux
, macos
, windows
.<arch>
: one of x64
, x86
, arm64
, arm32
.<module>
: the corresponding Java module name as a package hierarchy.glfw.so
in lwjgl-glfw-natives-linux.jar
is under the linux/x64/org/lwjgl/glfw
folder.Configuration
options.enum Platform.Architecture
and Platform.getArchitecture()
API.apply(Consumer<T>)
methods to StructBuffer<T>
.Consumer<T>
setters to structs with nested arrays of structs.memByteBuffer
overloads that return ByteBuffer
views of other buffer types.CLongBuffer
, a class similar to PointerBuffer
but for C long
values.Configuration
option).ByteBuffer
attachments in memSlice
& memDuplicate
.org.lwjgl.system.JNI
refactoring in 3.2.2
.glGetnUniformiv
and glGetnUniformuiv
.(B): binary incompatible change
(S): source incompatible change
Library.loadSystem
& Library.loadNative
methods now require a module name parameter. (S)
Consumer<T>
overloads from read-only structs with nested struct members. (S)
MemoryUtil.memFree(PointerBuffer)
changed to memFree(CustomBuffer)
. (B)
autoFlush
and favorDecSpeed
members of LZ4F_preferences_t
are now mapped to Java boolean
. (S)
descriptorCount
member of VkWriteDescriptorSet
must now be set explicitly. (S)
descriptorCount
may change via extensions, which invalidates auto-sizing.Published by Spasi over 5 years ago
Changes since 3.2.1
:
GLFW_RAW_MOUSE_MOTION
.glfwGetMonitorWorkarea
.glfwRawMouseMotionSupported
.stb_image
to 2.22 (up from 2.19)stb_image_resize
to 0.96 (up from 0.95)stb_image_write
to 1.13 (up from 1.09)stb_perlin
to 0.4 (up from 0.3)stb_rect_pack
to 1.00 (up from 0.11)stb_truetype
to 1.21 (up from 1.19)stb_vorbis
to 1.16 (up from 1.14)release
target now works in offline mode (LWJGL_BUILD_OFFLINE=true
).
SharedLibraryLoader
.void()
in callback functions without parameters.LLVMGetErrorMessage
now returns ByteBuffer
instead of String
, so that LLVMDisposeErrorMessage
can be used.nk_text_edit
, nk_text_undo_state
and nk_text_undo_record
structs are now public.EnqueueRead/Write
functions cannot be used to perform non-blocking reads/writes anymore.GL_DRAW_INDIRECT_BUFFER
overloads to NV_bindless_multi_draw_indirect
& NV_bindless_multi_draw_indirect_count
extensions.VmaMemoryUsage
enumeration values. (#458)(B): binary incompatible change
(S): source incompatible change
org.lwjgl.system.JNI
& org.lwjgl.system.jawt.JAWTFunctions
methods are now last, after normal parameters. (S)
CharSequence
overload of glfwUpdateGamepadMappings
. (S) (#462)-XX:-CriticalJNINatives
to the JVM.Published by Spasi almost 6 years ago
Changes since 3.2.0
:
GLFW_SCALE_TO_MONITOR
.glfwAttachWin32Window
. (experimental)ALC_SOFT_device_clock
extension.NV_memory_attachment
NV_compute_shader_derivatives
NV_fragment_shader_barycentric
NV_mesh_shader
NV_representative_fragment_test
NV_scissor_exclusive
NV_shader_texture_footprint
NV_shading_rate_image
QCOM_shader_framebuffer_fetch_rate
QCOM_texture_foveated_subsampled_layout
MaxInlineLevel
threshold, which can disable important optimizations.memDuplicate
and refactored memSlice
with implementations that use Unsafe
to construct buffer instances, similar to mem-X-Buffer
.
memSlice
with offset method is also thread-safe now.memCopy
/memSet
for Java versions 8 to 11.geometryc
, shaderc
, texturec
, texturev
) are now available.
shaderc
can be found under nightly/windows/x64/bgfx-tools/
.VmaVulkanFunctions.set(VkInstance, VkDevice)
will now use Vulkan 1.1 functions instead of KHR_get_memory_requirements2
functions, if available.LWJGL Template Extraction Tool
. It uses the new Clang bindings to parse native headers and extract LWJGL template declarations.
extract
module..position() > 0
.
memCopy
. (#414)alListener3i
. (#427)pGamePoseArray
parameter of VRCompositor_WaitGetPoses
is now nullable. (#418)VRRenderModels_GetComponentStateForDevicePath
.VRInput_UncompressSkeletalActionData
to VRInput_DecompressSkeletalBoneData
.VRInput
functions:
VRInput_GetDigitalActionData
VRInput_GetAnalogActionData
VRInput_GetPoseActionData
VRInput_GetSkeletalActionData
VRInput_GetOriginTrackedDeviceInfo
KHR_get_memory_requirements2
addresses in VmaVulkanFunctions
are now nullable.VmaAllocationCreateInfo
& VmaAllocationInfo
members.(B): binary incompatible change
(S): source incompatible change
sun.misc.Unsafe
is now required, there is no JNI fallback.VmaVulkanFunctions.set
helper method now returns VmaVulkanFunctions
. (B)
Published by Spasi about 6 years ago
Changes since 3.1.6
:
bgfx_init
now accepts a parameter structure instead of arguments.GLFW_FOCUS_ON_SHOW
.GL11C...GL46C
classes that include symbols of the Core Profile only.
org.lwjgl.opengl
package javadoc for more information on this feature.stb_image
to 2.19 (up from 2.18)stb_image_write
to 1.09 (up from 1.08)stb_truetype
to 1.19 (up from 1.18)stb_vorbis
to 1.14 (up from 1.13b)AL
, ALC
, CL
, EGL
, GL
, GLES
, GLX
, VK
GL30
class now extends the GL21
class, GL21
extends GL20
and so on.memGetAddress
/memPutAddress
are now an order of magnitude faster on 32-bit JVMs.java.util.Objects
index check intrinsics are used on Java 9.MemoryUtil
string decoding methods are now faster on both Java 8 and 9+.
org.lwjgl.system.JNI
now includes signatures for known callback functions.
PointerBuffer
javadoc.MemoryUtil
methods now replace requests for zero-size allocations with non-zero-size allocations.
NULL
pointer or throws an OOME
. This is consistent with ByteBuffer.allocateDirect
and avoids the undefined behavior of native allocators.MemoryUtil.memRealloc
is not @Nullable
anymore, will either succeed or throw an OOME
, like memAlloc/memCalloc
.MemoryStack
backed by externally managed memory.Configuration.DEBUG_MEMORY_ALLOCATOR
is enabled.Configuration.DEBUG_MEMORY_ALLOCATOR_INTERNAL.set(false)
.FatalError
instead of an arbitrary segfault.
stderr
.malloc/calloc
methods now support zero capacity, instead of throwing a NPE
..dylib
name mappingCL_DEVICE_PREFERRED_VECTOR_WIDTH_INT
constant name.clSetKernalArg3<t>
overloads.stbi_write_jpg
function's data
parameter.MemoryUtil.MemoryAllocationReport
now also returns the address of the memory allocation.windowWidth
/windowHeight
of the nvgBeginFrame
function changed to float
.Class.forName("org.lwjgl.util.vma.LibVma")
before using the VMA bindings.KHR_get_memory_requirements2
function addresses in VmaVulkanFunctions
are not optional.
KHR_get_memory_requirements2
extension, or set the equivalent function addresses from Vulkan 1.1
.Published by Spasi over 6 years ago
Changes since 3.1.5
:
GLFW_LOCK_KEY_MODS
input mode, GLFW_MOD_CAPS_LOCK
, GLFW_MOD_NUM_LOCK
)glfwWindowHintString
, GLFW_COCOA_FRAME_NAME
, GLFW_X11_CLASS_NAME
, GLFW_X11_INSTANCE_NAME
)glfwSetMonitorUserPointer
, glfwGetMonitorUserPointer
, glfwSetJoystickUserPointer
, glfwGetJoystickUserPointer
)glfwSetWindowContentScaleCallback
)GLFW_HOVERED
)stb_dxt
to 1.08b (up from 1.0.7)stb_image
to 2.18 (up from 2.16)stb_image_write
to 1.08 (up from 1.07)
STBIW_ZLIB_COMPRESS
can be overridden at runtime with stbi_zlib_compress
.stb_truetype
to 1.18 (up from 1.17)stb_vorbis
to 1.13b (up from 1.11)NullPointerException
. Eliminating those improves the quality of LWJGL applications.Configuration
setting to disable function lookup checks.MDB_VL32
is enabled on 32-bit builds.requires transitive
the corresponding Java module, instead of the opposite. (#334)
module-info
files have been moved under META-INF/version/9/
(#334)
requires static
declarations to satisfy optional binding interop dependencies. (#369)3.1.4
.ovr_TraceMessage
signature.AL_SOFT_source_resampler
extension.pnClusterRemapOut
parameter validation.null
/NULL
and returned null
, now require non-null input.
memByteBuffer
/memUTF8
/stack.UTF8
/etc.Safe
suffix that accept null
/NULL
, matching the old behavior.null
/NULL
on allocation failure, now throw OutOfMemoryError
instead. This matches the behavior of ByteBuffer.allocateDirect
.
memAlloc
/memCalloc
/etc.LibCStdlib.malloc
).NULL
, throw NullPointerException
instead of returning null
when the struct instance is not initialized.
Struct::isNull
to test pointer members of untrusted struct instances.bgfx_init(_vendorId)
and bgfx_update_texture_cube(_side)
parameters. (#368)uint16_t
bitfield constants are now mapped to int
. (#368)glfwInitHintString
has been renamed to glfwWindowHintString
.par_shapes_mesh::triangles
from uint16_t/ShortBuffer
to uint32_t/IntBuffer
.stbrp_rect::was_packed
is now mapped to Java boolean
.Published by Spasi over 6 years ago
Changes since 3.1.4
:
3.1.4
.Published by Spasi almost 7 years ago
Changes since 3.1.3
:
NanoVG
bindings.GLFW_TRANSPARENT_FRAMEBUFFER
window hint)glfwGetWindowOpacity
and glfwSetWindowOpacity
)glfwGetMonitorContentScale
and glfwGetWindowContentScale
)-Dorg.lwjgl.glfw.libname=glfw_wayland
.Automatic-Module-Name
with explicit JPMS modules.
jlink
tool.4KB
(page size) to 2MB
.ITS#8324
.eglMakeCurrent
arguments.<StructType>.malloc(capacity)
methods.MemoryStack
debugging when a try-with-resources block does not inline the call to AutoCloseable::close
.
$closeResource
method.T.use
, which uses the kotlin.AutoCloseable::closeFinally
extension function.Published by Spasi about 7 years ago
Changes since 3.1.2
:
-Dorg.lwjgl.system.allocator=rpmalloc
to make it the default memory allocator.glfwGetError
)glfwInitHintString
)glfwUpdateGamepadMappings
)glfwJoystickIsGamepad
)glfwGetGamepadName
)glfwGetGamepadState
, GLFW_GAMEPAD_*
, GLFWgamepadstate
)glfwGetJoystickGUID
)EGL_KHR_create_context_no_error
GLX_ARB_create_context_no_error
WGL_ARB_create_context_no_error
and WGL_EXT_colorspace
nvgShapeAntiAlias
function).ALC_SOFT_output_limiter
extension.stb_dxt
to 1.07 (up from 1.06)stb_image
to 2.16 (up from 2.15)stb_image_resize
to 0.95 (up from 0.94)stb_image_write
to 1.07 (up from 1.05)stb_truetype
to 1.17 (up from 1.15)stb_vorbis
to 1.11 (up from 1.10)@NativeType
annotations to generated bindings. Documents the native type of:
MemoryUtil
may now have up to Integer.MAX_VALUE
elements, regardless of element size.
LongBuffer
allocation of up to 16GB.MemoryUtil::memSet
and MemoryUtil::memCopy
.StructBuffer
subclasses are now Iterable
and have stream()
and parallelStream()
methods.LongBuffer
overloads to buffer object functions.bgfx_create_frame_buffer_from_attachment
.glPixelStoref
.ARB_direct_state_access
interactions are now respected when checking if the extension is available.ShortBuffer
overload to stbi_image_free
.stbtt_PackFontRangesGatherRects
and stbtt_PackFontRangesRenderIntoRects
.glfwGetError
has changed.JEmacros
and moved its functionality to JEmalloc
.ChunkHooks
has been replaced by ExtentHooks
.clCompileProgram
overloads.Published by Spasi over 7 years ago
Changes since 3.1.1
:
glfwGetError
)glfwRequestWindowAttention
)glfwGetKeyScancode
)glfwSetWindowMaximizeCallback
)glfwSetWindowAttrib
)glfwGetJoystickHats
)glfwInitHint
)GLFW_CENTER_CURSOR
)GLFW_COCOA_RETINA_FRAMEBUFFER
, GLFW_COCOA_FRAME_AUTOSAVE
, GLFW_COCOA_GRAPHICS_SWITCHING
, GLFW_COCOA_CHDIR_RESOURCES
, GLFW_COCOA_MENUBAR
)XI_RawMotion
for disabled cursor mode motion inputEGL_KHR_get_all_proc_addresses
and EGL_KHR_context_flush_control
AL_SOFT_source_resampler
extension.stb_dxt
to 1.0.6 (up from 1.0.4)stb_easy_font
to 1.0 (up from 0.7)stb_image
to 2.15 (up from 2.13)stb_image_resize
to 0.94 (up from 0.91)stb_image_write
to 1.05 (up from 1.02)stb_perlin
to 0.3 (up from 0.2)stb_rect_pack
to 0.11 (up from 0.10)stb_truetype
to 1.15 (up from 1.12)stb_vorbis
to 1.10 (up from 1.09)MemoryStack
: Increased default stack size to 64kb (up from 32kb)ClassLoader
specified by the caller. (#277)DEBUG_MEMORY_ALLOCATOR
and DEBUG_STACK
overhead in Java 9 using the new StackWalker
API.ovrInputState
struct.alcCaptureSamples
. The number of samples must now be specified explicitly, similar to alcRenderSamplesSOFT
.boolean
, that were missed while working on #181.
Bool
cl_bool
DCbool
MemoryUtil
to the generated org.lwjgl.system.jni.JNINativeInterface
.VKCapabilitiesInstance
and VKCapabilitiesDevice
.
VKCapabilitiesInstance
.VKCapabilitiesDevice
.VkInstance
or VkPhysicalDevice
exist only in VKCapabilitiesInstance
.VkDevice
and device-derived handles exist only in VKCapabilitiesDevice
.VK.getFunctionProvider()
.Published by Spasi almost 8 years ago
Changes since 3.1.0
:
Configuration
options.jemalloc
initialization fails and org.lwjgl.system.allocator
has not been set, a simple warning is now shown instead of an exception.natives
JAR files.natives
JAR files.System.loadLibrary
fails.MemoryUtil.memRealloc
to return null
when the allocation fails.binding.DISABLE_CHECKS
is now respected in structs.end
pointer to the end of the string are now auto-size transformed. Buffers passed to them should not include a null-terminating byte.LibC
prefix to all class names in the libc
bindings, to avoid conflicts with standard Java classes (Locale
, String
, etc.)lwjgl_opengl
and lwjgl_opengles
respectively).MemoryUtil.memSetupBuffer
.Published by Spasi almost 8 years ago
Changes since 3.0.0
:
byte/short
parameters to int
.va_list
parameters.strlen
methods used internally by LWJGL.memSet
and memCopy
.Configuration.DEBUG_LOADER
option.SharedLibraryLoader
are now locked to avoid conflicts with other processes (e.g. antivirus software). (#225)DEBUG_MEMORY_ALLOCATOR
option is enabled.realloc
tracking in the debug allocator.stbi_load*
functions.memSet
bugs.XXH*State
structs.Published by Spasi over 8 years ago
Changes since 3.0.0b
:
BINDINGS
WGLCapabilities
and GLXCapabilities
classes, respectively. Functionality in WGL, GLX and corresponding extensions that does not require a current context can now be used without creating a dummy context first. (#171)IMPROVEMENTS
MemoryStack
class and new allocation methods in struct classes and MemoryUtil
).PointerBuffer
and Struct/StructBuffer
subclasses as lightweight as possible. This makes it easier for escape analysis to eliminate allocations.glfwSetWindowIcon
and glfwSetWindowMonitor
, it now doesn't lack anything compared to LWJGL 2's Display.NativeResource
interface and made freeable objects usable as resources in try-with-resources statements. (#186)memSlice
for all buffers types in MemoryUtil
. (#179)Configuration
class for type safety and added more options.memSet
and memCopy
for small buffers.FIXES
SharedLibraryLoader
now works with any shared library, not only libraries LWJGL knows about. (#176)BREAKING CHANGES
java.util.function
interfaces. (#177)ALDevice/ALContext
wrappers from OpenAL and CLPlatform/CLDevice
wrappers from OpenCL. (#152)getInstance()
method from bindings loaded from shared libraries. Function pointers are now stored either in capabilities classes or in a nested Functions inner class.MemoryUtil.memFree(StructBuffer)
with StructBuffer.free()
.__ALIGNMENT
to ALIGNOF
in struct classes.org.lwjgl.system.Retainable
interface. Closure
and FunctionProvider
subclasses are now destroyed using .free()
instead of .release()
.org.lwjgl.util
package.Published by Spasi almost 9 years ago
This build includes the following changes:
Changes to bindings:
Published by Spasi almost 9 years ago
The first official release. This build suffers from several bugs and the API is very different from subsequent releases.