fbpx
Wikipedia

LWJGL

The Lightweight Java Game Library (LWJGL) is an open-source software library that provides bindings to a variety of C libraries for video game developers to Java. It exposes cross-platform libraries commonly used in developing video games and multimedia titles, such as Vulkan, OpenGL, OpenAL and OpenCL.

Lightweight Java Game Library (LWJGL)
Original author(s)Caspian Prince
Developer(s)Ioannis Tsakpinis
Initial release4 February 2007; 17 years ago (2007-02-04)[1]
Stable release
3.3.3 / 16 September 2023; 6 months ago (2023-09-16)
Repositorygithub.com/lwjgl
Written inJava, C, Kotlin[2][3]
Operating systemWindows, Linux, macOS, FreeBSD
PlatformJava platform
TypeFree computer library
LicenseBSD,[4] some bindings under different licenses[2]
Websitelwjgl.org

The primary goal of the project is to provide a way for Java developers to get access to resources that are otherwise unavailable or poorly implemented on the existing Java platform. The main philosophy is to expose underlying technology as a thin wrapper, thus creating an API close to the original. It is also the basis of many high-level Java game engines and libraries, such as libGDX or the jMonkeyEngine.

History edit

Development of the library began in 2002 with the release of J2SE 1.4, making use of the newly-added non-blocking I/O operations and off-heap memory access. These additions to the JDK allowed for better access to native memory and libraries not a part of the JDK. The first official release of the library was on 4 February 2007.[1]

On 13 November 2014, version 3 was announced, which was released in the alpha version on 27 April 2015 and is a complete rewrite of LWJGL.[5][6][7] Many new bindings, including GLFW, EGL and Objective-C, were added.[4][6] Support for Oculus Rift development was also added with LibOVR bindings.[4][7] The new version was released on 4 June 2016, after more than 3 and a half years in development.[8]

Bindings edit

The library accesses native C code through the Java Native Interface (JNI). Bindings to each of the native libraries exist as different modules so developers can make custom builds with only the things they need in a certain program.[4][7][9]

While utility classes are written in pure Java, most of the binding classes are automatically generated by a custom generator implemented in Kotlin.[2][3]

Since version 3.1, LWJGL is fully split into 51 modules that can be downloaded and used separately. To make this process easier, the project provides an online build configurator, which allows users to download custom combinations of modules and automatically generates Maven and Gradle configuration files to ease their use with existing projects.[10][11]

Provided bindings[2][4]
Binding Category Description Notes
EGL Khronos APIs Interface between Khronos rendering APIs and the underlying native platform window system.
OpenCL API for cross-platform parallel computing.
OpenGL 3D graphics specification implemented by most GPU vendors. Most extensions are supported, but less popular ones will be added on request.
OpenGL ES OpenGL for embedded systems like mobile phones, tablets, or consoles.
Vulkan Upcoming cross-platform 3D graphics API.
GLFW Display and Input Window management library needed for handling OpenGL and Vulkan contexts as well as user input.
JAWT AWT native interface.
nfd Small cross-platform native file dialogs library.
tinyfd Small native dialog library.
OpenAL Audio Three-dimensional audio API. ALC and other extensions are supported. Specifically bundles the OpenAL Soft implementation.
Opus Open, royalty-free audio codec.
Assimp Graphics Portable open source library to import various 3D model formats.
bgfx Cross-platform rendering library supporting multiple graphics backends.
DriftFX Library to render OpenGL content into JavaFX nodes.
LibOVR API of the Oculus Rift SDK.
meshoptimizer A mesh optimization library that makes meshes smaller and faster to render
NanoSVG Simple SVG parser.
NanoVG 2D vector graphics rendering library using OpenGL.
Nuklear Simple GUI library.
par_shapes Generator for parametric and other simple shapes.
par_streamlines Triangulate wide lines and curves.
OpenVR An API runtime that allows access to VR hardware from multiple vendors without requiring applications have specific knowledge of the type of hardware they are targeting.
Shaderc A collection of libraries for shader compilation
SPIRV-Cross A library for performing reflection on SPIR-V and disassembling SPIR-V back to high level languages.
OpenEXR A small, single-header library to load and save OpenEXR (.exr) images.
Tootle (AMD) A 3D triangle mesh optimization library that improves on existing mesh preprocessing techniques.
Vulkan Memory Allocator An easy to integrate Vulkan memory allocation library.
Yoga An open-source, cross-platform layout library that implements CSS Flexbox.
STB STB Lightweight single-file libraries for loading images, sounds and fonts.
Bullet Physics Other Real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine-learning, etc.
CUDA A parallel computing platform and programming model developed by NVIDIA for general computing on GPUs.
dyncall Library for dynamically calling C functions in a portable way. Set to be removed.
jemalloc Low-level memory management.
libffi A portable, high level programming interface to various calling conventions. Replaces dyncall.
libdivide A library that replaces expensive integer divides with comparatively cheap multiplication and bitshifts.
LLVM A collection of modular and reusable compiler and toolchain technologies.
LMDB Fast database library using memory-mapped files.
LZ4 A lossless data compression algorithm that is focused on speed.
Meow Hash Fast non-cryptographic hash.
ODBC A C-language interface that makes it possible for applications to access data from a variety of database management systems.
Remotery Realtime CPU/GPU profiler.
rpmalloc Cross-platform thread caching memory allocator.
xxHash Fast hash algorithm.
Zstandard A fast lossless compression algorithm.

Notable uses edit

References edit

  1. ^ a b Matzon, Brian (4 February 2007). "LWJGL 1.0 Released". LWJGL Forum. Retrieved 23 July 2016.
  2. ^ a b c d "LWJGL/lwjgl3". github.com. Retrieved 13 August 2016.
  3. ^ a b "lwjgl3/doc – Generator". github.com. 11 August 2015. Retrieved 30 August 2015.
  4. ^ a b c d e "Official website". Retrieved 14 August 2015.
  5. ^ Tsakpinis, Ioannis (13 November 2014). "Welcome to LWJGL 3". blog.lwjgl.org.
  6. ^ a b "LWJGL 3 Roadmap". github.com. Retrieved 2 June 2015.
  7. ^ a b c Tsakpinis, Ioannis (27 April 2015). "LWJGL 3.0.0a released". blog.lwjgl.org.
  8. ^ "LWJGL 3.0.0 Released!". blog.lwjgl.org. 4 June 2016. Retrieved 4 June 2016.
  9. ^ "Bindings FAQ". github.com. 27 December 2014. Retrieved 27 July 2015.
  10. ^ "LWJGL 3.1.0 Released!". blog.lwjgl.org. 30 October 2016. Retrieved 11 November 2016.
  11. ^ "Download – LWJGL". lwjgl.org. Retrieved 11 November 2016.
  12. ^ "Minecraft Attributions | Minecraft". Minecraft.net. Retrieved 9 July 2020.
  13. ^ "APZDTISA #3: This time with LIVE MULTIPLAYER!". Project Zomboid. 17 February 2014. Retrieved 25 January 2022.

External links edit

  • Official website  

lwjgl, this, article, multiple, issues, please, help, improve, discuss, these, issues, talk, page, learn, when, remove, these, template, messages, topic, this, article, meet, wikipedia, notability, guidelines, products, services, please, help, demonstrate, not. This article has multiple issues Please help improve it or discuss these issues on the talk page Learn how and when to remove these template messages The topic of this article may not meet Wikipedia s notability guidelines for products and services Please help to demonstrate the notability of the topic by citing reliable secondary sources that are independent of the topic and provide significant coverage of it beyond a mere trivial mention If notability cannot be shown the article is likely to be merged redirected or deleted Find sources LWJGL news newspapers books scholar JSTOR March 2016 Learn how and when to remove this template message This article relies excessively on references to primary sources Please improve this article by adding secondary or tertiary sources Find sources LWJGL news newspapers books scholar JSTOR August 2015 Learn how and when to remove this template message Learn how and when to remove this template message The Lightweight Java Game Library LWJGL is an open source software library that provides bindings to a variety of C libraries for video game developers to Java It exposes cross platform libraries commonly used in developing video games and multimedia titles such as Vulkan OpenGL OpenAL and OpenCL Lightweight Java Game Library LWJGL Original author s Caspian PrinceDeveloper s Ioannis TsakpinisInitial release4 February 2007 17 years ago 2007 02 04 1 Stable release3 3 3 16 September 2023 6 months ago 2023 09 16 Repositorygithub wbr com wbr lwjglWritten inJava C Kotlin 2 3 Operating systemWindows Linux macOS FreeBSDPlatformJava platformTypeFree computer libraryLicenseBSD 4 some bindings under different licenses 2 Websitelwjgl wbr orgThe primary goal of the project is to provide a way for Java developers to get access to resources that are otherwise unavailable or poorly implemented on the existing Java platform The main philosophy is to expose underlying technology as a thin wrapper thus creating an API close to the original It is also the basis of many high level Java game engines and libraries such as libGDX or the jMonkeyEngine Contents 1 History 2 Bindings 3 Notable uses 4 References 5 External linksHistory editDevelopment of the library began in 2002 with the release of J2SE 1 4 making use of the newly added non blocking I O operations and off heap memory access These additions to the JDK allowed for better access to native memory and libraries not a part of the JDK The first official release of the library was on 4 February 2007 1 On 13 November 2014 version 3 was announced which was released in the alpha version on 27 April 2015 and is a complete rewrite of LWJGL 5 6 7 Many new bindings including GLFW EGL and Objective C were added 4 6 Support for Oculus Rift development was also added with LibOVR bindings 4 7 The new version was released on 4 June 2016 after more than 3 and a half years in development 8 Bindings editThe library accesses native C code through the Java Native Interface JNI Bindings to each of the native libraries exist as different modules so developers can make custom builds with only the things they need in a certain program 4 7 9 While utility classes are written in pure Java most of the binding classes are automatically generated by a custom generator implemented in Kotlin 2 3 Since version 3 1 LWJGL is fully split into 51 modules that can be downloaded and used separately To make this process easier the project provides an online build configurator which allows users to download custom combinations of modules and automatically generates Maven and Gradle configuration files to ease their use with existing projects 10 11 Provided bindings 2 4 Binding Category Description NotesEGL Khronos APIs Interface between Khronos rendering APIs and the underlying native platform window system OpenCL API for cross platform parallel computing OpenGL 3D graphics specification implemented by most GPU vendors Most extensions are supported but less popular ones will be added on request OpenGL ES OpenGL for embedded systems like mobile phones tablets or consoles Vulkan Upcoming cross platform 3D graphics API GLFW Display and Input Window management library needed for handling OpenGL and Vulkan contexts as well as user input JAWT AWT native interface nfd Small cross platform native file dialogs library tinyfd Small native dialog library OpenAL Audio Three dimensional audio API ALC and other extensions are supported Specifically bundles the OpenAL Soft implementation Opus Open royalty free audio codec Assimp Graphics Portable open source library to import various 3D model formats bgfx Cross platform rendering library supporting multiple graphics backends DriftFX Library to render OpenGL content into JavaFX nodes LibOVR API of the Oculus Rift SDK meshoptimizer A mesh optimization library that makes meshes smaller and faster to renderNanoSVG Simple SVG parser NanoVG 2D vector graphics rendering library using OpenGL Nuklear Simple GUI library par shapes Generator for parametric and other simple shapes par streamlines Triangulate wide lines and curves OpenVR An API runtime that allows access to VR hardware from multiple vendors without requiring applications have specific knowledge of the type of hardware they are targeting Shaderc A collection of libraries for shader compilationSPIRV Cross A library for performing reflection on SPIR V and disassembling SPIR V back to high level languages OpenEXR A small single header library to load and save OpenEXR exr images Tootle AMD A 3D triangle mesh optimization library that improves on existing mesh preprocessing techniques Vulkan Memory Allocator An easy to integrate Vulkan memory allocation library Yoga An open source cross platform layout library that implements CSS Flexbox STB STB Lightweight single file libraries for loading images sounds and fonts Bullet Physics Other Real time collision detection and multi physics simulation for VR games visual effects robotics machine learning etc CUDA A parallel computing platform and programming model developed by NVIDIA for general computing on GPUs dyncall Library for dynamically calling C functions in a portable way Set to be removed jemalloc Low level memory management libffi A portable high level programming interface to various calling conventions Replaces dyncall libdivide A library that replaces expensive integer divides with comparatively cheap multiplication and bitshifts LLVM A collection of modular and reusable compiler and toolchain technologies LMDB Fast database library using memory mapped files LZ4 A lossless data compression algorithm that is focused on speed Meow Hash Fast non cryptographic hash ODBC A C language interface that makes it possible for applications to access data from a variety of database management systems Remotery Realtime CPU GPU profiler rpmalloc Cross platform thread caching memory allocator xxHash Fast hash algorithm Zstandard A fast lossless compression algorithm Notable uses editMinecraft Java Edition 12 Project Zomboid 13 References edit a b Matzon Brian 4 February 2007 LWJGL 1 0 Released LWJGL Forum Retrieved 23 July 2016 a b c d LWJGL lwjgl3 github com Retrieved 13 August 2016 a b lwjgl3 doc Generator github com 11 August 2015 Retrieved 30 August 2015 a b c d e Official website Retrieved 14 August 2015 Tsakpinis Ioannis 13 November 2014 Welcome to LWJGL 3 blog lwjgl org a b LWJGL 3 Roadmap github com Retrieved 2 June 2015 a b c Tsakpinis Ioannis 27 April 2015 LWJGL 3 0 0a released blog lwjgl org LWJGL 3 0 0 Released blog lwjgl org 4 June 2016 Retrieved 4 June 2016 Bindings FAQ github com 27 December 2014 Retrieved 27 July 2015 LWJGL 3 1 0 Released blog lwjgl org 30 October 2016 Retrieved 11 November 2016 Download LWJGL lwjgl org Retrieved 11 November 2016 Minecraft Attributions Minecraft Minecraft net Retrieved 9 July 2020 APZDTISA 3 This time with LIVE MULTIPLAYER Project Zomboid 17 February 2014 Retrieved 25 January 2022 External links editOfficial website nbsp Retrieved from https en wikipedia org w index php title LWJGL amp oldid 1215793416, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.