LWJGL
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Initial release | 4 February 2007[1] |
---|---|
Stable release | 3.0.0
/ 4 June 2016 |
Preview release | 3.0.0b
/ 20 November 2015 |
Repository | github |
Written in | Java, C, Kotlin[2][3] |
Operating system | Windows, Linux, OS X |
Platform | Java platform |
Type | Free computer library |
License | BSD,[4] some bindings under different licenses[2] |
Website | www |
The Lightweight Java Game Library (LWJGL) is an open-source Java software library for video game developers. It exposes high performance cross-platform libraries commonly used in developing video games and multimedia titles, such as OpenGL, Vulkan, OpenAL and OpenCL. It further provides access to controllers such as gamepads, steering wheels and joysticks in a platform-neutral way.[5]
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.
LWJGL is available under a BSD license.[4]
On 13 November 2014 version 3 was announced, which was released in alpha version on 27 April 2015 and is a complete rewrite of LWJGL.[6][7][8] Many new bindings, including GLFW, EGL and Objective-C, were added.[4][7] Support for Oculus Rift development was also added with LibOVR bindings.[4][8] The new version was released on 4 June 2016, after more than 3 and a half years in development.[9]
Bindings
This section needs expansion. You can help by adding to it. (July 2015) |
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][8][10]
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]
Binding | Description | Notes |
---|---|---|
EGL | 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 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 | Window management library needed for handling OpenGL and Vulkan contexts as well as user input. | |
JAWT | AWT native interface. | |
LibOVR | API of the Oculus Rift SDK. | |
nfd | Small cross-platform native file dialogs library. | |
OpenAL | Three-dimensional audio API. | ALC and other extensions are supported. |
OpenAL Soft | Freely licensed software implementation of OpenAL. | |
NanoVG | 2D vector graphics rendering library using OpenGL. | |
par_shapes | Generator for parametric and other simple shapes. | |
STB | Lightweight single-file library for loading images, sounds and fonts. | |
dyncall | Library for dynamically calling C functions in a portable way. | |
jemalloc | Low-level memory management. | |
xxHash | Fast hash algorithm. | |
Objective-C | Interface to Apple's Cocoa API. | |
libffi | Library for calling generic native functions. | Replaced with dyncall in the latest nightly builds.[11] |
Notable uses
References
- ^ "LWJGL 1.0 Released". forum.lwjgl.org. 4 February 2007. 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 f "Official website". Retrieved 14 August 2015.
- ^ "LWJGL Wiki". github.com. Retrieved 2 June 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.
- ^ "Issue #182 – Refactor callbacks". github.com. 17 April 2016. Retrieved 28 April 2016.
- ^ "minecraft.net – Credits". Retrieved 6 August 2016.