chuigda / vulkan4j

Vulkan bindings for Java using Project-Panama (java.lang.foreign) APIs
http://vulkan4j.7dg.tech/
BSD 3-Clause "New" or "Revised" License
16 stars 0 forks source link

vulkan4j

Discord

Vulkan Binding for Java using Project Panama java.lang.foreign APIs.

Heavily inspired by the vulkanalia crate.

Vulkan tutorial

For users new to Vulkan, there is a (almost) complete adaptation of https://vulkan-tutorial.com by Alexander Overvoorde to use Java and vulkan4j instead of C++. The published version of this tutorial can be found here, and the sources for the tutorial (including standalone working code examples for each chapter) can be found under the tutorial directory.

Overview

panama-plus is a small utility library that gives a thin wrapper over Project Panama java.lang.foreign APIs to make them easier and more type-safe to use. It is used by vulkan4j to provide a more Java-friendly API for Vulkan.

vk4j is the main library that provides the Vulkan bindings. Bindings are generated from vk.xml using vkxml2java (we plan to switch to codegen module soon).

vma is a binding to the Vulkan Memory Allocator library. It is generated from vk_mem_alloc.h using the codegen module.

glfw is a wrapper around the GLFW library that provides a more Java-friendly API for creating windows and handling input. It is generated from GLFW header files using the codegen module.

gles2 provides OpenGL ES2 bindings. Bindings are generated from gl.xml using the codegen module.

Roadmap