Go bindings for the Vulkan graphics and compute API, enabling low-level GPU programming in Go.
vulkan-go/vulkan is a Go language binding for the Vulkan API, a low-overhead, cross-platform 3D graphics and compute API. It enables developers to write GPU-accelerated applications in Go without relying on C/C++ code, providing direct access to Vulkan's low-level control for high-performance rendering and parallel computing tasks.
Go developers working on graphics-intensive applications, game engines, or compute tasks who need direct access to GPU hardware with cross-platform support.
It offers a pure Go interface to Vulkan, reducing the complexity of mixing C/C++ with Go projects while maintaining full API fidelity and performance, along with additional tools like the asche framework to simplify Vulkan initialization.
Vulkan API bindings for Go programming language
Provides a one-to-one mapping to the Vulkan C API, enabling developers to use all Vulkan features directly in Go without abstraction layers, as stated in the direct API access feature.
Works on desktop (Windows, Linux, macOS via MoltenVK), mobile (Android, iOS), and cloud environments like AWS, demonstrated in the project timeline with screenshots from various platforms.
Full support for Vulkan validation layers with custom Go callbacks, allowing detailed error checking and debugging, as shown in the validation layers section with example error logs.
Includes the asche framework to simplify Vulkan initialization and platform state management, reducing boilerplate for new applications, as used in demos like VulkanCube.
The binding was last updated to Vulkan 1.1.88 in 2018, missing newer features and improvements in recent Vulkan specifications like 1.2 or 1.3, which limits compatibility with modern graphics pipelines.
Requires manual handling of MoltenVK dylibs, as automatic linking with xcframeworks isn't supported; developers must copy libMoltenVK.dylib to /usr/local/lib, adding extra setup steps.
Compared to C++ Vulkan, there are fewer tutorials, examples, and community support for using Vulkan in Go, making learning and troubleshooting more challenging despite the demos provided.
Even with asche, setting up Vulkan involves multiple steps, dependencies on windowing libraries like GLFW or SDL2, and careful proc address initialization, which can be daunting for newcomers.
[maintenance mode] A low-overhead Vulkan-like GPU API for Rust.
Safe and rich Rust wrapper around the Vulkan API
The high-speed OpenGL, OpenCL, OpenAL, OpenXR, GLFW, SDL, Vulkan, Assimp, WebGPU, and DirectX bindings library your mother warned you about.
Open-Source Vulkan C++ API
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.