{"id":17803462,"url":"https://github.com/chuigda/vulkan4j","last_synced_at":"2025-06-16T19:05:06.423Z","repository":{"id":256623263,"uuid":"855950445","full_name":"chuigda/vulkan4j","owner":"chuigda","description":"Vulkan bindings for Java using Project-Panama (java.lang.foreign) APIs","archived":false,"fork":false,"pushed_at":"2024-12-11T14:16:11.000Z","size":26849,"stargazers_count":26,"open_issues_count":12,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-10T09:56:20.834Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://vulkan4j.7dg.tech/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chuigda.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-11T18:15:26.000Z","updated_at":"2025-03-10T08:35:23.000Z","dependencies_parsed_at":"2024-09-15T06:38:36.438Z","dependency_job_id":"195c976e-7812-4f3f-ab99-abbb4bb486a0","html_url":"https://github.com/chuigda/vulkan4j","commit_stats":null,"previous_names":["chuigda/vulkan4j"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuigda%2Fvulkan4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuigda%2Fvulkan4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuigda%2Fvulkan4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chuigda%2Fvulkan4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chuigda","download_url":"https://codeload.github.com/chuigda/vulkan4j/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243862363,"owners_count":20360131,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-27T12:46:50.755Z","updated_at":"2025-06-16T19:05:06.411Z","avatar_url":"https://github.com/chuigda.png","language":"Java","readme":"# vulkan4j\n\n[![CI status](https://github.com/chuigda/vulkan4j/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/chuigda/vulkan4j/actions/workflows/ci.yml)\n\n\u003e [Website \u0026 JavaDoc](https://vulkan4j.doki7.club) | [Vulkan Tutorial port](https://vulkan4j.doki7.club/tutorial/en/) | [LearnOpenGL port](https://vulkan4j.doki7.club/learnopengl/en/) | [Examples](https://github.com/chuigda/vulkan4j/tree/master/modules/example/src/main/java/example) | [Discord](https://discord.gg/UsmRvrt4gg)\n\n*This project is heavily inspired by the [`vulkanalia`](https://github.com/KyleMayes/vulkanalia) crate.*\n\n`vulkan4j` is a series of graphics and relevant API binding for Java, implemented with Java 22 [Project Panama](https://openjdk.org/projects/panama/) `java.lang.foreign` APIs. This project initially focuses on [Vulkan](https://www.vulkan.org/), but soon we expanded to other graphics APIs such as [OpenGL](https://www.opengl.org/) and [OpenGL ES](https://www.khronos.org/opengles/). More APIs will be added in the future, **feature requests and contributions are welcome!**\n\n## Bindings Available\n\n- [Vulkan](https://www.khronos.org/vulkan/) ([`vulkan`](https://github.com/chuigda/vulkan4j/tree/master/modules/vulkan) module): Generated from [`vk.xml`](https://github.com/KhronosGroup/Vulkan-Docs/blob/main/xml/vk.xml) and [`video.xml`](https://github.com/KhronosGroup/Vulkan-Docs/blob/main/xml/video.xml).\n- [Vulkan Memory Allocator](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator) ([`vma`](https://github.com/chuigda/vulkan4j/tree/master/modules/vma) module): Generated from [`vk_mem_alloc.h`](https://github.com/GPUOpen-LibrariesAndSDKs/VulkanMemoryAllocator/blob/master/include/vk_mem_alloc.h). If you use a specific build supporting `vk4jSetJavaTrace`, you can enjoy Java stacktrace on VMA assertion failures. Check out the [`vma_build`](https://github.com/chuigda/vulkan4j/tree/master/modules/vma/vma_build) directory for more information.\n- [OpenGL](https://www.opengl.org/) ([`opengl`](https://github.com/chuigda/vulkan4j/tree/master/modules/opengl) module): Generated from [`gl.xml`](https://github.com/KhronosGroup/OpenGL-Registry/blob/main/xml/gl.xml). Our supported extension list is copied from LWJGL, and not all extensions are included (since some OpenGL extensions are completely useless nowadays). Name your desired extension in the issue tracker!\n- [OpenAL](https://www.openal.org/) ([`openal`](https://github.com/chuigda/vulkan4j/tree/master/modules/openal) module): Generated from OpenAL-soft header files. This module is based on OpenAL-soft 1.2, and provides a complete set of OpenAL features, including all extensions supported by OpenAL-soft.\n- [GLFW](https://www.glfw.org/) ([`glfw`](https://github.com/chuigda/vulkan4j/tree/master/modules/glfw) module): Generated from GLFW header files.\n- [libshaderc](https://github.com/google/shaderc) ([`shaderc`](https://github.com/chuigda/vulkan4j/tree/master/modules/shaderc) module): Generated from `libshaderc` header files. This module also provides a useful `ShadercUtil` class to assist you with including files.\n\n### Experimental Bindings\n\n- [SDL3](https://www.libsdl.org/) ([`sdl3`](https://github.com/chuigda/vulkan4j/tree/master/modules/sdl3) module): Generated from SDL3 header files. This module is still under development, it has unimplemented functionalities, and may contain bugs. Issues and pull requests are welcome.\n\n\u003cdetails\u003e\n\u003csummary\u003eObsolete bindings\u003c/summary\u003e\n\n- [OpenGL ES **2.0 only**](https://www.khronos.org/opengles/) ([`gles2`](https://github.com/chuigda/vulkan4j/tree/master/modules/gles2) module): Also generated from `gl.xml`. This module only provides most fundamental OpenGL ES 2.0 features, and does not include any extensions. This package was initially created for the Chuigda's own use. This package will still get maintained since Chuigda wants.\n\n\u003c/details\u003e\n\n## `ffm-plus`\n\nTo improve development experience using Java 22 FFM APIs, we created a small library [`ffm-plus`](https://github.com/chuigda/vulkan4j/tree/master/modules/ffm-plus) that encapsulates most commonly used facilities, such as typed pointers and bitfield operations. All our bindings use `ffm-plus`.\n\n## Documentation and Tutorials\n\n### [JavaDoc](https://vulkan4j.doki7.club/)\n\n*Our website itself is generated with JavaDoc, with a custom `overview.html`.*\n\n### [Vulkan tutorial port](https://vulkan4j.doki7.club/tutorial/en/)\nFor users new to Vulkan, there is a (almost) complete adaptation of [https://vulkan-tutorial.com](https://vulkan-tutorial.com) by [Alexander Overvoorde](https://github.com/Overv) to use Java and `vulkan4j` instead of C++. The published version of this tutorial can be found [here](https://vulkan4j.doki7.club/tutorial/en/), and the sources for the tutorial (including standalone working code examples for each chapter) can be found under the `tutorial` directory.\n\n### [LearnOpenGL tutorial port](https://vulkan4j.doki7.club/learnopengl/en/)\nFor OpenGL users, we ported the [LearnOpenGL](https://learnopengl.com) tutorial to use Java and `vulkan4j`. The published version of this tutorial can be found [here](https://vulkan4j.doki7.club/learnopengl/en/), and the sources for the tutorial can be found under the `tutorial` directory. Till now only the first several chapters are ported, which should be adequate to get you started with OpenGL in Java. The rest of the chapters will be ported in the future.\n\n### [Examples](https://github.com/chuigda/vulkan4j/tree/master/modules/example/src/main/java/example)\nWe provide a set of examples, which can be found under the `example` directory. These examples are intended to demonstrate how to use the bindings in practice, and can be used as a reference for your own projects.\n\n## Roadmap\n- [x] v0.3.0 rewrite, new namespace, new `ffm-plus` module, use `codegen-v2` module for all registry extraction and code generation.\n- [x] API enhancements: chaining `set` methods for structures, LWJGL style `set` methods for structure members, `allocateV` and `writeV` series functions for `Ptr` types.\n- [x] Full OpenGL bindings\n  - [ ] Tutorial porting\n- [x] OpenAL bindings\n- [ ] WebGPU bindings\n- [ ] Full OpenGL ES bindings\n- [ ] SDL3 bindings\n- [ ] LLVM bindings (*is this graphics anymore?*)\n\n### *Development history before 0.3.0?*\n\nSee [vulkan4j-legacy](https://github.com/CousinZe/vulkan4j-legacy).\n\n## Donation\n\nDoki Doki 7th Design Club! is not accepting any donation at the moment \u003cdel\u003ethough Chuigda thinks that the whole world owes him 27 billion 30 million CHF\u003c/del\u003e. If you like this project, either using in production or got some inspiration, just star and thank author.\n","funding_links":[],"categories":["Projects","Recently Updated"],"sub_categories":["Game Development","[Mar 08, 2025](/content/2025/03/08/README.md)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuigda%2Fvulkan4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchuigda%2Fvulkan4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchuigda%2Fvulkan4j/lists"}