# CVulkan

CVulkan is a C extension for Vulkan. It leverages power of Vulkan with simplicity of Python.

## Presentation

CVulkan is a complete Vulkan wrapper. It keeps the original Vulkan API and try to limit the differences induced by Python.

## How to install

### Pip

You can install directly CVulkan with pip:

```
pip install cvulkan
```

### Manual install

You can install it manually if you want the last version:

```
git clone https://github.com/realitix/cvulkan
cd cvulkan
python setup.py install
```

## How to contribute

To contribute, you should first read the `How it works` section.
Any contribution is welcome and I answer quickly.

## How it works

CVulkan is a C module generated by a Python script. To proceed, the script `vulkan_generator.py`
computes a model of Vulkan API based on `vk.xml` (the file from Kronos describing the API) and then
uses `jinja2` templates to write the `vulkanmodule.c` file.

Here the basic steps:

 - Load vk.xml
 - Use `xmltodict` to parse the xml document
 - Generate a good data model from it
 - Pass the model to the `jinja2` template engine
 - The template engine generate the final c file


# CVulkan

CVulkan is a C extension for Vulkan. It leverages power of Vulkan with simplicity of Python.

## Presentation

CVulkan is a complete Vulkan wrapper. It keeps the original Vulkan API and try to limit the differences induced by Python.

## How to install

### Pip

You can install directly CVulkan with pip:

```
pip install cvulkan
```

### Manual install

You can install it manually if you want the last version:

```
git clone https://github.com/realitix/cvulkan
cd cvulkan
python setup.py install
```

## How to contribute

To contribute, you should first read the `How it works` section.
Any contribution is welcome and I answer quickly.

## How it works

CVulkan is a C module generated by a Python script. To proceed, the script `vulkan_generator.py`
computes a model of Vulkan API based on `vk.xml` (the file from Kronos describing the API) and then
uses `jinja2` templates to write the `vulkanmodule.c` file.

Here the basic steps:

 - Load vk.xml
 - Use `xmltodict` to parse the xml document
 - Generate a good data model from it
 - Pass the model to the `jinja2` template engine
 - The template engine generate the final c file

## Community

You can checkout my blog, I speaks about **CVulkan**:
[Blog](https://realitix.github.io)

Add link to the blog
Add link to the blog
