7 个版本
0.12.6 | 2022 年 3 月 15 日 |
---|---|
0.12.5 | 2022 年 3 月 11 日 |
#343 in 渲染
15KB
200 代码行
WGPU Tokio
这个 crate 提供了在异步方式下使用 wgpu 的辅助特质。这个 crate 依赖于 tokio 来进行异步调度。
原因
在游戏开发中使用 tokio 带来了许多好处。使用多个线程可以让我们充分利用 CPU。而且 tokio 的绿色线程抽象既便宜又高效。
然而,直接在 tokio 的上下文中调用 wgpu 的 api 并不是一个好主意。大多数情况下,它们会阻塞代码以进行与 GPU 的聊天等操作。这将阻塞当前的 worker 线程,并阻止其他任务在等待 wgpu 完成时执行。
更好的解决方案是将这项工作卸载到专门的线程池,并让其运行,然后在完成时通知 tokio。
这个 crate 做了所有这些,并将其放入一个整洁的特质中。
用法
确保你有适当的依赖项
[dependencies]
wgpu = "0.12"
wgpu_tokio = "0.12"
然后在你的代码中确保你正在使用这个特质
use wgpu_tokio::DeviceAsyncExt;
这个特质要求设备位于 Arc
后面。然后就可以进行操作了。
async fn do_something(device: Arc<Device>) {
let my_buffer = device.create_buffer_async(...).await;
}
许可
本项目受 MIT 许可证 的许可。
依赖项
~5–18MB
~229K SLoC