LWJGL (https://www.lwjgl.org) 是一个 Java 库,支持跨平台访问流行的本机 API,可用于开发图形 (OpenGL/Vulkan)、音频 (OpenAL) 和并行计算 (OpenCL) 应用程序。这种访问是直接且高性能的,同时也封装在类型安全且用户友好的层中,适合 Java 生态系统。
LWJGL 是一项支持技术,提供低级访问。它不是一个框架,并且不提供比本机库公开的更高级别的实用程序。因此,鼓励新手程序员在直接使用该库之前尝试使用 LWJGL 的框架或游戏引擎之一。
LWJGL 是开源软件,可免费免费使用。
有用的链接:
接触:
如果您想做出贡献,请参阅文档/自述文件以快速概述项目结构、安装说明和配置选项。
从版本3.1.0
开始,LWJGL 作为一组模块进行分发。仅核心模块是必需的,所有绑定都是可选的(但某些绑定依赖于其他绑定)。下载 LWJGL 最简单的方法是使用网站上的构建配置器。
构建配置器生成可添加到现有项目的Maven 和 Gradle声明。这是开发时使用 LWJGL 最简单的方法。
LWJGL 还可以作为一组简单的 JAR 文件下载。每个模块由以下文件组成:
要编译和运行 LWJGL 应用程序,核心模块的基本 JAR 文件和本机 JAR 文件以及使用的每个绑定都应添加到类路径中。 LWJGL 将本机提取到临时文件夹并自动加载它们,因此无需进一步配置。如果需要更多定制(例如,在创建特定于平台的安装程序时),可以手动提取本机并通过java.library.path
加载。有关更多选项,请参阅配置类。
LWJGL 3 需要 Java 8 或更高版本才能构建和运行,目前支持以下平台/架构:
示例代码:
要将 LWJGL 2 代码迁移到 LWJGL 3,请参阅迁移指南。
LWJGL 用户面临的最常见问题可以通过以下方式轻松解决:
LWJGLX/debug 是一个 Java 代理,它将自动检测很多此类问题。它还可以生成跟踪日志,该日志在向 LWJGL 报告问题时非常有用。
当寻求帮助或怀疑 LWJGL 中存在错误时,准备重现问题的 MVCE(最小、完整和可验证示例)将提高获得快速且有用响应的机会。
图书馆 | 描述 |
---|---|
乙二醇 | Khronos 渲染 API(例如 OpenGL ES 或 OpenVG)与底层本机平台窗口系统之间的接口。 |
KTX(Khronos 纹理) | OpenGL®、Vulkan® 和其他 GPU API 纹理的轻量级容器。 |
OpenCL | 一种开放、免版税的标准,适用于个人计算机、服务器、移动设备和嵌入式平台中的各种处理器的跨平台并行编程。 |
OpenGL | 业界采用最广泛的 2D 和 3D 图形 API,为各种计算机平台带来了数以千计的应用程序。 |
OpenGL ES | 免版税、跨平台 API,用于嵌入式系统(包括控制台、电话、电器和车辆)上的全功能 2D 和 3D 图形。 |
开放XR | 一种免版税的开放标准,提供对增强现实 (AR) 和虚拟现实 (VR)(统称为 XR)平台和设备的高性能访问。 |
伏尔甘 | 新一代图形和计算 API,可提供对 PC 和控制台、移动电话和嵌入式平台等各种设备中使用的现代 GPU 的高效、跨平台访问。 |
图书馆 | 描述 |
---|---|
GLFW | 创建多个窗口,处理用户输入(键盘、鼠标、游戏外围设备)并管理上下文。还具有多显示器支持、剪贴板访问、文件拖放等功能。 |
贾瓦特 | AWT 本机接口。 |
扩展本机文件对话框 | 一个小型 C 库,可移植地调用本机文件打开、文件夹选择和文件保存对话框。 |
蒂尼夫德 | 本机对话框库。 |
图书馆 | 描述 |
---|---|
调频调制 | 用于向任何游戏添加声音和音乐的端到端解决方案。 |
开放AL | 跨平台 3D 音频 API,适合与游戏应用程序和许多其他类型的音频应用程序一起使用。 |
OpenAL软件 | OpenAL 3D 音频 API 的 LGPL 许可的跨平台软件实现。 |
作品 | 完全开放、免版税、高度通用的音频编解码器。 |
图书馆 | 描述 |
---|---|
阿辛普 | 一个可移植的开源库,用于以统一的方式导入各种知名的 3D 模型格式。 |
BGFX | 跨平台、与图形 API 无关的“自带引擎/框架”风格渲染库,根据宽松的 BSD-2 条款开源许可获得许可。 |
自由类型 | 用于渲染字体的免费软件库。 |
哈夫巴兹 | 一个文本整形库,允许程序将 Unicode 输入序列转换为正确格式化和定位的字形输出 - 适用于任何书写系统和语言。 |
网格优化器 | 一个网格优化库,可以使网格更小、渲染速度更快。 |
生成器 | 多通道有符号距离场发生器。 |
纳米SVG | 一个简单愚蠢的 SVG 解析器。 |
纳米VG | 一个小型的 OpenGL 抗锯齿矢量图形渲染库。 |
核 | 用 ANSI C 编写并在公共领域获得许可的最小状态立即模式图形用户界面工具包。 |
par_octasphere | 为球体、圆角盒和胶囊生成三角形网格。 |
par_shapes | 生成参数化曲面和其他简单形状。 |
par_streamlines | 对宽直线和曲线进行三角测量。 |
着色器 | 用于着色器编译的库的集合。 |
SPIRV-Cross | 用于对 SPIR-V 执行反射并将 SPIR-V 反汇编回高级语言的库。 |
微小的 OpenEXR | 一个小型的、仅包含标头的库,用于加载和保存 OpenEXR(.exr) 图像。 |
图特尔 (AMD) | 一个 3D 三角形网格优化库,改进了现有的网格预处理技术。 |
Vulkan 内存分配器 | 一个易于集成的 Vulkan 内存分配库。 |
瑜伽 | 一个实现 Flexbox 的开源、跨平台布局库。 |
图书馆 | 描述 |
---|---|
LibOVR | Oculus SDK 的 API。 |
开放VR | 允许访问来自多个供应商的 VR 硬件的 API 和运行时,而不要求应用程序了解其目标硬件的具体知识。 |
图书馆 | 描述 |
---|---|
stb_easy_font | 快速而易于部署的位图字体,用于打印帧速率等。 |
机顶盒图像 | 从文件/内存加载/解码图像:JPG、PNG、TGA、BMP、PSD、GIF、HDR、PIC |
stb_图像_调整大小 | 以良好的质量调整图像的大小。 |
stb_image_write | 图像写入磁盘:PNG、TGA、BMP |
机顶盒柏林 | 修订了 Perlin 噪声(3D 输入,1D 输出)。 |
stb_rect_pack | 简单的二维矩形包装机,质量不错。 |
stb_truetype | 解析、解码和光栅化 truetype 字体中的字符。 |
stb_vorbis | 将 ogg vorbis 文件从文件/内存解码为浮点/16 位带符号输出。 |
图书馆 | 描述 |
---|---|
CUDA | NVIDIA 开发的用于 GPU 上通用计算的并行计算平台和编程模型。 |
哈沃洛克 | 现代架构分层拓扑的可移植抽象,包括 NUMA 内存节点、套接字、共享缓存、内核和同时多线程。 |
杰马洛克 | 通用的 malloc 实现,强调避免碎片和可扩展的并发支持。 |
库菲 | 适用于各种调用约定的可移植的高级编程接口。 |
自由分裂 | 一个用相对便宜的乘法和位移位代替昂贵的整数除法的库。 |
LLVM | 模块化且可重用的编译器和工具链技术的集合。 |
LM数据库 | 速度极快、内存效率极高的数据库。通过内存映射文件,它具有纯内存数据库的读取性能,同时保留标准基于磁盘的数据库的持久性。 |
LZ4 | 一种无损数据压缩算法,注重压缩和解压缩速度。 |
喵哈希 | 极快的非加密哈希。 |
ODBC | AC 编程语言接口,使应用程序能够访问各种数据库管理系统 (DBMS) 中的数据。 |
远程控制 | 实时 CPU/GPU 分析器托管在单个 C 文件中,并具有在 Web 浏览器中运行的查看器。 |
rpmalloc | 用 C 实现的公共域跨平台无锁线程缓存 16 字节对齐内存分配器。 |
xx哈希值 | 一种极快的哈希算法,以 RAM 速度限制运行。 |
Z 标准 (zstd) | 一种快速无损压缩算法,针对zlib级别的实时压缩场景,具有更好的压缩比。 |
绑定的使用须遵守相应许可的条款。
LWJGL 的存在感谢所有为我们集体做出贡献和捐赠的人们。