Voodoo - A high-performance Vulkan® API for Rust

Documentation | Change Log

Supported platforms

Features:

Getting Started

Ensure that Vulkan drivers are installed for your device. Add the following to your project's Cargo.toml:

toml [dependencies] voodoo = "0.3"

And add the following to your crate root (lib.rs or main.rs): rust extern crate voodoo;

Example

Create an instance:

```rust extern crate voodoo;

use voodoo::{Result as VdResult, Instance, ApplicationInfo, Loader}; use std::ffi::CString;

/// Initializes and returns a new loader and instance with all available /// extension function pointers loaded. fn initinstance() -> VdResult { let appname = CString::new("Hello!")?;

let app_info = ApplicationInfo::builder()
    .application_name(&app_name)
    .application_version((1, 0, 0))
    .api_version((1, 0, 0))
    .build();

let loader = Loader::new()?;

Instance::builder()
    .application_info(&app_info)
    .enabled_extensions(&loader.enumerate_instance_extension_properties()?)
    .build(loader)

}

fn main() { let instance = initinstance().unwrap(); }

```

See [hello.rs] for a complete, working example adapted from https://vulkan-tutorial.com/.

[hello.rs] screenshot:

hello<em>example</em>screenshot.jpg

Status

Other Vulkan libraries in Rust

For a higher level, more opinionated, easier to use Vulkan API that does more for you see the [Vulkano] project.

Other low-ish level Rust libraries include [dacite] and [ash]. See [vks] for a direct ffi interface.


“Vulkan and the Vulkan logo are registered trademarks of the Khronos Group Inc.”