gpt4 book ai didi

c++ - Vulkan/VMA 更改缓冲区大小,类似于 `realloc`

转载 作者:行者123 更新时间:2023-12-02 02:42:47 34 4
gpt4 key购买 nike

假设我遇到了一种情况,我想更改 vulkan 缓冲区 (VkBuffer) 的大小。例如,如果我想向现有顶点缓冲区添加更多顶点。我如何增大/缩小 VkBuffer?我是否会被迫创建一个新的缓冲区并放弃旧的缓冲区,或者是否有类似于 C 的 realloc 的功能?它是否以 vulkan 扩展的形式存在?

此外,我正在使用 Vulkan 内存分配器 (VMA)。如果有这样的 realloc 功能,我希望这两种解决方案都使用 VMA 和原始 vulkan。

最佳答案

VMA 和 Vulkan 扩展中都没有 realloc

历史上曾有过 vmaResizeAllocation(),但它已被弃用,现已失效。

为了增长,您需要预测并预先分配一些额外的大小,或者获得新的分配。对于收缩,您可以使用已有的内存,或获取新的内存。

如果您获得新的分配,则必须执行显式复制,这也可能对同步产生影响。所以它有点超出了 VMA 的范围,而且对于许多分配器算法来说可能也不是那么好。

关于c++ - Vulkan/VMA 更改缓冲区大小,类似于 `realloc`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63291849/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com