微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Rust Vulkano 如何重用命令缓冲区

如何解决Rust Vulkano 如何重用命令缓冲区

我已经为每帧预先计算了一个命令缓冲区,现在我想循环提交它们。到目前为止我有这段代码

let command_buffer = &command_buffers[image_num];
let future = prevIoUs_frame_end
    .take()
    .unwrap()
    .join(acquire_future)
    .then_execute(queue.clone(),command_buffer)
    .unwrap()
    .then_swapchain_present(queue.clone(),swapchain.clone(),image_num)
    .then_signal_fence_and_flush();

然而这会产生

                       let command_buffer = &command_buffers[image_num];
    |                                       ^^^^^^^^^^^^^^^
    = note: but,the lifetime must be valid for the static lifetime...
note: ...so that the type `&PrimaryAutoCommandBuffer` will meet its required lifetime bounds
   --> src\main.rs:442:22
    |
442 |                     .then_execute(queue.clone(),command_buffer)

我可以看到该函数需要静态生命周期

    fn then_execute<Cb>(
        self,queue: Arc<Queue>,command_buffer: Cb,) -> Result<CommandBufferExecFuture<Self,Cb>,CommandBufferExecError>
    where
        Self: Sized,Cb: PrimaryCommandBuffer + 'static,

也许我应该像这里那样克隆这个缓冲区

https://github.com/bwasty/vulkan-tutorial-rs/blob/f2f6935914bec4e79937b8cac415683c9fbadcb1/src/bin/15_hello_triangle.rs#L523

但是,在版本 vulkano = "0.24.0" 中不再为 PrimaryCommandBuffer 实施克隆

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。