#vulkan #graphics #gpgpu #gpu #api-bindings

voodoo

一个直观、惯用、无偏见、零开销的 Vulkan API

8 个不稳定版本 (3 个破坏性更新)

使用旧的 Rust 2015

0.3.1 2018年3月12日
0.3.0 2018年1月24日
0.2.1 2017年10月16日
0.1.2 2017年10月14日
0.0.1 2017年9月17日

#507 in 图形 API

每月 26 次下载
用于 2 个 Crates(通过 voodoo_winit

MIT/Apache

1.5MB
36K SLoC

Voodoo - Rust 的高性能 Vulkan® API

文档 | 变更日志

Supported platforms

功能

  • 直观、惯用的接口
  • 零额外开销
    • 无不必要的分配
    • 无中间结构或额外复制
    • 构建器编译为直接赋值
  • 线程安全的分配/销毁
    • 安全逃生门无处不在
  • 最少的样板代码
  • 无偏见且无隐藏
  • 完整的 API 覆盖率

入门指南

确保您的设备已安装 Vulkan 驱动程序。将以下内容添加到项目 Cargo.toml 中

[dependencies]
voodoo = "0.3.1"

并将以下内容添加到 crate 根目录(lib.rs 或 main.rs)

extern crate voodoo;

示例

创建实例

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 init_instance() -> VdResult<Instance> {
    let app_name = 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 = init_instance().unwrap();
}

查看 hello.rs 中的完整、可工作的示例,该示例改编自 https://vulkan-tutorial.com/

hello.rs 截图

hello_example_screenshot.jpg

状态

  • API 覆盖率
    • 核心:100%
    • 扩展:70%
  • 文档:30%
  • 稳定性:97%

Rust 中其他 Vulkan 库

要查看更高级、更无偏见、更容易使用的 Vulkan API,该 API 为您做了更多工作,请参阅 Vulkano 项目。

其他较低级别的 Rust 库包括 daciteash。有关直接 ffi 接口,请参阅 vks


*“Vulkan 和 Vulkan 标志是 Khronos Group Inc. 的注册商标。”*

依赖项

~3.5MB
~62K SLoC