Metadata-Version: 2.4
Name: vulkan_py
Version: 1.0.0
Summary: Actual ultimate Python binding for Vulkan after the realitix project went cold. This package supports lastest release of the Vulkan SDK and API, and require zero dependencies
Author: StormMGamming41
License: GPL-3.0-or-later
Keywords: vulkan,python,ctypes,bindings,code-generation,api,vulkan api
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Multimedia :: Graphics :: 3D Rendering
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: examples
Requires-Dist: glfw>=2.0; extra == "examples"
Dynamic: license-file

# vulkan_py

**ctypes-based Python bindings for the Vulkan graphics API — generated straight from Khronos's `vk.xml`.**

> **A note to early adopters:** if you picked this up in its first few releases, sorry for the rough/missing docs — this README (and the full tutorial it links to) is the fix, and it should have been here from the start.

## What is it?

`vulkan_py` gives you the full Vulkan C API in Python. Instead of hand-writing and hand-maintaining bindings, `vulkan_py` is generated by parsing `vk.xml` — the same registry Khronos itself publishes, and the same approach mature bindings like Rust's `ash` use. That means keeping up with new Vulkan versions and extensions is just a matter of re-running the generator against the latest spec, not months of manual porting.

## Why does this exist?

Most existing Python Vulkan wrappers target Vulkan SDK versions that have long since been discontinued, and haven't kept pace with the spec. `vulkan_py` was built to fix that at the root: generate from the spec, don't hand-copy it.

## Install

```bash
pip install vulkan_py
```

## What's included

- Bindings for the full object model: handles, structs/unions, enums, bitmasks, and function pointers
- Loader, instance, and device command dispatch, following Vulkan's own function-loading model
- Common ergonomics handled for you (e.g. non-dispatchable handles, auto-filled `sType`)
- Generated directly from `vk.xml`, so version/extension coverage tracks the spec rather than a maintainer's free time

## A taste of it

```python
import vulkan_py as vk

app_info = vk.VkApplicationInfo(
    pApplicationName=b"My App",
    apiVersion=vk.VK_API_VERSION_1_3,
)

create_info = vk.VkInstanceCreateInfo(
    pApplicationInfo=app_info,
)

instance = vk.vkCreateInstance(create_info, None)
```

> **Note:** this snippet is illustrative — swap in the exact call shape from the docs below before publishing.

Vulkan itself is huge and verbose, and a README isn't the place to walk you through it. The full step-by-step guide — from your first instance all the way to a point-light-lit triangle using dynamic rendering — lives in the repo docs:

👉 **[Read the full tutorial](https://github.com/StormMGamming41/Vulkan-vk-xml-to-py-parser)**

## Status

`vulkan_py` is in **alpha**. The generator and core API surface work end to end, and it's actively used to build real renderers — but expect some rough edges while the API settles.

## Contributing

Issues and pull requests are welcome over on [GitHub](https://github.com/StormMGamming41/Vulkan-vk-xml-to-py-parser).

## License

GPL
