mira

crates.io docs.rs license

Pure and simple Vulkan bindings generated from Vulkan-Headers!

Mira provides a simple and straightforward way to interact with Vulkan. Everything was generated by bindgen and uses the original API names.

This crate provides: * 👀 Function pointers! * 💯 Dynamic loader of instance and device commands! * ✍️ Original names of commands, structures and macros! * 💪 Extra useful features to help with development! * 😀 Simple examples!

Code

Enumerate all instance extensions.

```rust use mira::error::MiraError; use mira::loader; use mira::mem::{zeroedvec, fromcstring}; use mira::vulkan::; use const_cstr::;

fn main() -> Result<(), MiraError> { let enumerateinstanceextensions:PFNvkEnumerateInstanceExtensionProperties; enumerateinstanceextensions = unsafe { loader::instance(std::ptr::nullmut(), const_cstr!("vkEnumerateInstanceExtensionProperties"))? };

let mut count:u32 = 0;
unsafe { enumerate_instance_extensions(std::ptr::null_mut(), &mut count, std::ptr::null_mut()) };
let mut extensions = unsafe { zeroed_vec::<VkExtensionProperties>(count as usize) };

unsafe { enumerate_instance_extensions(std::ptr::null_mut(), &mut count, extensions.as_mut_ptr()) };

println!("Instance extensions");
for extension in extensions.iter().enumerate() {
    let str = match unsafe { from_cstring(extension.1.extensionName.as_ptr()) } {
        Ok(str) => str,
        Err(_) => continue,
    };

    println!("extension #{} - {}", extension.0, str);
}

Ok(())

} ```

Examples

Successfully tested on Linux(Lubuntu 20.04) with Intel(R) HD Graphics 620 (KBL GT2).

Color

Displays a window with a purple background.

cargo run --example color

screenshot

Android build

Android NDK: 22.1.7171670

  1. Add ${HOME}/Android/Sdk/ndk/${NDKVERSION}toolchains/llvm/prebuilt/linux-x8664/bin to PATH. > export PATH=$PATH:/home/xxxx/Android/Sdk/ndk/22.1.7171670/toolchains/llvm/prebuilt/linux-x86_64/bin
  2. Add Android target of your choice(aarch64-linux-android, armv7-linux-androideabi, x86_64-linux-android ...) > rustup target add aarch64-linux-android
  3. Run cargo build --target ${TARGET} > cargo build --target aarch64-linux-android

Vulkan version

1.3.239

Vulkan Changelog

License

Apache 2.0