All Projects → LWJGL → Lwjgl3

LWJGL / Lwjgl3

Licence: bsd-3-clause
LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan), audio (OpenAL), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR) applications.

Programming Languages

java
68154 projects - #9 most used programming language
kotlin
9241 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
objective c
16641 projects - #2 most used programming language
Objective-C++
1391 projects

Projects that are alternatives of or similar to Lwjgl3

Silk.net
The high-speed OpenAL, OpenGL, Vulkan, and GLFW bindings library your mother warned you about.
Stars: ✭ 534 (-84.92%)
Mutual labels:  openal, opengl, vulkan, glfw, opencl
Flextgl
OpenGL and Vulkan header and loader generator.
Stars: ✭ 180 (-94.92%)
Mutual labels:  opengl, vulkan, opengl-es, glfw
Nimgl
NimGL is a Nim library that offers bindings for popular libraries used in computer graphics
Stars: ✭ 218 (-93.84%)
Mutual labels:  opengl, vulkan, glfw, bindings
Ludo
A libretro frontend written in golang
Stars: ✭ 366 (-89.66%)
Mutual labels:  openal, opengl, glfw, bindings
Opentk
The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
Stars: ✭ 2,284 (-35.48%)
Mutual labels:  openal, opengl, opengl-es, opencl
Shaderconductor
ShaderConductor is a tool designed for cross-compiling HLSL to other shading languages
Stars: ✭ 1,146 (-67.63%)
Mutual labels:  opengl, vulkan, opengl-es
Bgfx
Cross-platform, graphics API agnostic, "Bring Your Own Engine/Framework" style rendering library.
Stars: ✭ 10,252 (+189.6%)
Mutual labels:  opengl, vulkan, glfw
Filament
Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
Stars: ✭ 13,215 (+273.31%)
Mutual labels:  opengl, vulkan, opengl-es
glfw-d
D translation of GLFW, a multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
Stars: ✭ 14 (-99.6%)
Mutual labels:  vulkan, glfw, opengl-es
Magnum
Lightweight and modular C++11 graphics middleware for games and data visualization
Stars: ✭ 3,728 (+5.31%)
Mutual labels:  opengl, vulkan, glfw
Diligentengine
A modern cross-platform low-level graphics library and rendering framework
Stars: ✭ 2,142 (-39.49%)
Mutual labels:  opengl, vulkan, opengl-es
Gpu performance api
GPU Performance API for AMD GPUs
Stars: ✭ 170 (-95.2%)
Mutual labels:  opengl, vulkan, opencl
Glfw
A multi-platform library for OpenGL, OpenGL ES, Vulkan, window and input
Stars: ✭ 8,416 (+137.74%)
Mutual labels:  opengl, vulkan, opengl-es
Pmtech
Lightweight, multi-platform, data-oriented game engine.
Stars: ✭ 478 (-86.5%)
Mutual labels:  opengl, vulkan, opengl-es
Gpu Viewer
A front-end to glxinfo, vulkaninfo, clinfo and es2_info - Linux
Stars: ✭ 129 (-96.36%)
Mutual labels:  opengl, vulkan, opencl
Oreon Engine
OpenGL/Vulkan Java 3D Engine
Stars: ✭ 431 (-87.82%)
Mutual labels:  opengl, vulkan, glfw
Diligentsamples
Sample projects demonstrating the usage of Diligent Engine
Stars: ✭ 138 (-96.1%)
Mutual labels:  opengl, vulkan, opengl-es
Vk Gl Cts
Khronos Vulkan, OpenGL, and OpenGL ES Conformance Tests
Stars: ✭ 324 (-90.85%)
Mutual labels:  opengl, vulkan, opengl-es
Rspirv
Rust implementation of SPIR-V module processing functionalities
Stars: ✭ 332 (-90.62%)
Mutual labels:  opengl, vulkan, opencl
Diligentcore
Core functionality of Diligent Engine
Stars: ✭ 263 (-92.57%)
Mutual labels:  opengl, vulkan, opengl-es

Maven Central API Javadoc License

Backers on Open Collective Sponsors on Open Collective Size Build Status

LWJGL - Lightweight Java Game Library 3

LWJGL (https://www.lwjgl.org) is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL/Vulkan), audio (OpenAL) and parallel computing (OpenCL) applications. This access is direct and high-performance, yet also wrapped in a type-safe and user-friendly layer, appropriate for the Java ecosystem.

LWJGL is an enabling technology and provides low-level access. It is not a framework and does not provide higher-level utilities than what the native libraries expose. As such, novice programmers are encouraged to try one of the frameworks or game engines that make use of LWJGL, before working directly with the library.

LWJGL is open source software and freely available at no charge.

Useful links:

Contact:

If you'd like to contribute, see doc/README for a quick overview of the project structure, installation instructions and configuration options.

Getting Started

As of version 3.1.0, LWJGL is distributed as a set of modules. Only the core module is required and all bindings are optional (but some bindings depend on other bindings). The easiest way to download LWJGL is to use the build configurator on the website.

The build configurator generates Maven & Gradle declarations that can be added to existing projects. This is the easiest way to use LWJGL while developing.

LWJGL can also be downloaded as a simple set of JAR files. Each module consists of the following files:

  • lwjgl-<module>.jar
  • lwjgl-<module>-sources.jar
  • lwjgl-<module>-javadoc.jar
  • lwjgl-<module>-natives-<platform>.jar (for some bindings)

To compile and run an LWJGL application, the base and natives JAR files of the core module and each binding used should be added to the classpath. LWJGL extracts the natives to a temporary folder and loads them automatically, so no further configuration is necessary. If more customization is required (e.g. when creating a platform-specific installer) the natives may be extracted manually and loaded via java.library.path. See the Configuration class for more options.

LWJGL 3 requires Java 8 or later to build and run and currently supports the following platforms/architectures:

  • Linux x64
  • Linux arm64 (ARMv8/AArch64)
  • Linux arm32 (ARMv7/armhf)
  • macOS x64
  • macOS arm64
  • Windows x64
  • Windows x86
  • Windows arm64

Example code:

For migrating LWJGL 2 code to LWJGL 3, see the Migration Guide.

Troubleshooting

Most common issues faced by LWJGL users are trivially addressed with the following:

LWJGLX/debug is a Java Agent that will automatically detect a lot of these issues. It can also generate a trace log that's useful when reporting issues to LWJGL.

When asking for help or when you suspect a bug in LWJGL, preparing an MVCE (Minimal, Complete, and Verifiable example) that reproduces the issue will improve the chances of a quick and useful response.

List of Supported Bindings

Khronos APIs

Library Description
EGL An interface between Khronos rendering APIs such as OpenGL ES or OpenVG and the underlying native platform window system.
OpenCL An open, royalty-free standard for cross-platform, parallel programming of diverse processors found in personal computers, servers, mobile devices and embedded platforms.
OpenGL The most widely adopted 2D and 3D graphics API in the industry, bringing thousands of applications to a wide variety of computer platforms.
OpenGL ES A royalty-free, cross-platform API for full-function 2D and 3D graphics on embedded systems - including consoles, phones, appliances and vehicles.
Vulkan A new generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.

Display and Input

Library Description
GLFW Create multiple windows, handle user input (keyboard, mouse, gaming peripherals) and manage contexts. Also features multi-monitor support, clipboard access, file drag-n-drop, and much more.
JAWT The AWT native interface.
nfd A tiny, neat C library that portably invokes native file open and save dialogs.
tinyfd A native dialog library.

Audio

Library Description
OpenAL A cross-platform 3D audio API appropriate for use with gaming applications and many other types of audio applications.
OpenAL Soft An LGPL-licensed, cross-platform, software implementation of the OpenAL 3D audio API.
Opus A totally open, royalty-free, highly versatile audio codec.

Graphics

Library Description
Assimp A portable Open Source library to import various well-known 3D model formats in a uniform manner.
bgfx Cross-platform, graphics API agnostic, “Bring Your Own Engine/Framework” style rendering library, licensed under permissive BSD-2 clause open source license.
LibOVR The API of the Oculus SDK.
meshoptimizer A mesh optimization library that makes meshes smaller and faster to render.
NanoSVG A simple stupid SVG parser.
NanoVG A small antialiased vector graphics rendering library for OpenGL.
Nuklear A minimal state immediate mode graphical user interface toolkit written in ANSI C and licensed under public domain.
par_octasphere Generates triangle meshes for spheres, rounded boxes, and capsules.
par_shapes Generate parametric surfaces and other simple shapes.
par_streamlines Triangulate wide lines and curves.
OpenVR An API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the 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.
Tiny OpenEXR A small, single header-only 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 Flexbox.

stb - single-file public domain libraries for C/C++

Library Description
stb_easy_font Quick-and-dirty easy-to-deploy bitmap font for printing frame rate, etc.
stb_image Image loading/decoding from file/memory: JPG, PNG, TGA, BMP, PSD, GIF, HDR, PIC
stb_image_resize Resize images larger/smaller with good quality.
stb_image_write Image writing to disk: PNG, TGA, BMP
stb_perlin Revised Perlin noise (3D input, 1D output).
stb_rect_pack Simple 2D rectangle packer with decent quality.
stb_truetype Parse, decode, and rasterize characters from truetype fonts.
stb_vorbis Decode ogg vorbis files from file/memory to float/16-bit signed output.

Other

Library Description
CUDA A parallel computing platform and programming model developed by NVIDIA for general computing on GPUs.
jemalloc A general purpose malloc implementation that emphasizes fragmentation avoidance and scalable concurrency support.
libffi A portable, high level programming interface to various calling conventions.
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 An extraordinarily fast, memory-efficient database. With memory-mapped files, it has the read performance of a pure in-memory database while retaining the persistence of standard disk-based databases.
LZ4 A lossless data compression algorithm that is focused on compression and decompression speed.
Meow hash An extremely fast non-cryptographic hash.
ODBC A C programming language interface that makes it possible for applications to access data from a variety of database management systems (DBMSs).
Remotery A realtime CPU/GPU profiler hosted in a single C file with a viewer that runs in a web browser.
rpmalloc A public domain cross platform lock free thread caching 16-byte aligned memory allocator implemented in C.
xxHash An Extremely fast Hash algorithm, running at RAM speed limits.
Zstandard (zstd) A fast lossless compression algorithm, targeting real-time compression scenarios at zlib-level and better compression ratios.

Use of a binding is subject to the terms of the corresponding license.

Supporting this project

LWJGL exists thanks to all the people who contribute and back/sponsor our collective.

Our gold sponsors:

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].