LWJGL

LWJGL是一个Java库,支持跨平台访问在开发图形(OpenGL)、音频(OpenAL)和并行计算(OpenCL)应用程序中有用的流行的原生API。(LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL), audio (OpenAL) and parallel computing (OpenCL)

Github stars Tracking Chart

LWJGL是一个Java库,支持跨平台访问在开发图形(OpenGL)、音频(OpenAL)和并行计算(OpenCL)应用程序中有用的流行的原生API。 这种访问是直接和高性能的,但也包裹在类型安全和用户友好的层,适合Java生态系统。LWJGL是开源软件,免费提供。

LWJGL是一种使能技术,提供低级访问。 它不是一个框架,并且不提供比本机库公开的更高级的实用程序。 因此,鼓励新手程序员在直接使用库之前尝试使用LWJGL的框架或游戏引擎之一。

LWJGL 3是一个新的开始,LWJGL 2是它的前身。 LWJGL 2已经用于创建几十个游戏,包括由Mojang的Minecraft(我的世界)和由Titpygames的 Revenge of the Titans(泰坦的复仇)。 它也用于流行的游戏引擎,如 libGDX 和 jMonkeyEngine。

Overview

Name With OwnerLWJGL/lwjgl3
Primary LanguageJava
Program languageC (Language Count: 10)
Platform
License:BSD 3-Clause "New" or "Revised" License
Release Count18
Last Release Name3.3.3 (Posted on 2023-09-16 16:10:43)
First Release Name3.0.0a (Posted on 2015-08-04 13:57:13)
Created At2012-12-23 15:40:04
Pushed At2023-12-18 14:33:58
Last Commit At2023-12-18 16:22:59
Stargazers Count4.6k
Watchers Count161
Fork Count619
Commits Count4k
Has Issues Enabled
Issues Count777
Issue Open Count75
Pull Requests Count112
Pull Requests Open Count2
Pull Requests Close Count53
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private

Maven Central
API Javadoc
License
Slack Status

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
  • Windows x64
  • Windows x86

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., DriftFX, A library that allows you to render any OpenGL content directly into JavaFX nodes., 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_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, -------, -----------, Bullet Physics, 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, Encapsulates architecture-, OS- and compiler-specific function call semantics in a virtual bind argument parameters from left to right and then call interface allowing programmers to call C functions in a completely dynamic manner., jemalloc, A general purpose malloc implementation that emphasizes fragmentation avoidance and scalable concurrency support., 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:










To the top