#vulkan #vulkan-bindings #gpu #graphics #rendering #ffi

nobs-vk

绑定 vulkan 命令和扩展加载的一个非常基础、非丰富的包装器

12 个版本

0.2.0 2019 年 2 月 24 日
0.1.10 2019 年 2 月 5 日
0.1.7 2019 年 1 月 30 日

#293 in 图形 API

50 每月下载次数
5 个 crates(4 个直接) 中使用

MIT 许可证

1MB
14K SLoC

nobs-vk

无废话的 vulkan 绑定。

该 crate 由 Python 脚本自动生成,并提供用于 vulkan 的类型、常量和函数。

  1. 存在性问题
  2. 文档
  3. 设置
    1. linux
    2. windows
    3. mac
  4. 使用 nobs-vk
  5. 使用 Python 生成 Rust 源代码
  6. 贡献

存在性问题

nobs-vk 为何存在?nobs-vk...

  1. 是按照 vulkan api 的文档方式使用的
  2. 是从 vulkan 注册表中提取 vk.xml 的 Python 脚本自动生成的
  3. 给予你在设计决策中自由发挥的空间(但因此不能保护你免于自己的愚蠢)
  4. 不是背后隐藏 vulkan api 的完整窗口创建的膨胀库,只是为了执行一些小型的计算着色器而使用无头 vulkan 构建

虽然存在更复杂的 vulkan 包装器,但它们也试图完全隐藏 vulkan api 在另一层 Rust 代码之后,并可能迫使你做出你通常避免的设计决策。这个库试图尽可能简单,只暴露可调用的函数给 vulkan。

文档

docs.rs 找到该库的完整文档。

设置

要使用 nobs-vk,你需要一个在你的系统上安装了 vulkan 兼容驱动程序的 GPU。可选地,你可以选择安装 vulkan sdk

目前唯一的测试环境是 linux。欢迎贡献!

linux

当使用 NVIDIA GPU 时,请安装 NVIDIA 的专有驱动程序(自驱动程序版本 387 以来对 vulkan 1.1 提供全面支持)。

# apt install  vulkan-utils

在 AMD 和 Intel GPU 上,安装软件包即可(例如 apt)

# apt install libvulkan1 mesa-vulkan-drivers vulkan-utils

windows

安装你的 GPU 的当前驱动程序和 vulkan sdk。待办事项:尝试看看这实际上是否可行...

mac

待办事项:不知道谁在使用它?

使用 nobs-vk

由于本库的设计理念是不向现有的Vulkan API中引入更多复杂性,请参阅官方Vulkan 文档参考。在这里,我们只简要介绍如何设置

首先我们需要初始化库

extern crate nobs_vk as vk;
let vk_lib = vk::VkLib::new(); // or with_feature(vk::VERSION_x_x) to use specific feature level

注意:VkLib函数既是vk::VkLib对象成员,也是vk命名空间中的自由函数

没有第二点。

然而,在任何给定时间只能有一个VkLib实例。丢弃实例并创建另一个实例并不成问题。在库初始化之后,我们可以通过两种方式调用Vulkan命令

  • 通过VkLib,例如
vk_lib.CreateInstance(&info, std::ptr::null(), &mut handle);
  • 通过其全局函数,例如
vk::CreateInstance(&info, std::ptr::null(), &mut handle);

使用 Python 生成 Rust 源代码

Rust库可以通过python generate/generate.py构建。这将替换src目录中的lib.rs文件。

贡献

鼓励大家贡献!特别是任何有助于使本库在所有平台上运行的代码都将在项目的这个阶段非常有用。

依赖项