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)
1.5MB
36K SLoC
Voodoo - Rust 的高性能 Vulkan® API
文档 | 变更日志
功能
- 直观、惯用的接口
- 零额外开销
- 无不必要的分配
- 无中间结构或额外复制
- 构建器编译为直接赋值
- 线程安全的分配/销毁
- 安全逃生门无处不在
- 最少的样板代码
- 无偏见且无隐藏
- 完整的 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
截图
状态
- API 覆盖率
- 核心:100%
- 扩展:70%
- 文档:30%
- 稳定性:97%
Rust 中其他 Vulkan 库
要查看更高级、更无偏见、更容易使用的 Vulkan API,该 API 为您做了更多工作,请参阅 Vulkano 项目。
其他较低级别的 Rust 库包括 dacite 和 ash。有关直接 ffi 接口,请参阅 vks。
*“Vulkan 和 Vulkan 标志是 Khronos Group Inc. 的注册商标。”*
依赖项
~3.5MB
~62K SLoC