Vulkan/VMA 更改缓冲区大小类似于 `realloc`
Vulkan/VMA Change buffer size similar to `realloc`
假设我 运行 想更改 vulkan 缓冲区 (VkBuffer) 的大小。例如,如果我想向现有顶点缓冲区添加更多顶点。我如何 grow/shrink VkBuffer?我会被迫只创建一个新缓冲区并放弃旧缓冲区,还是有类似于 C 的 realloc
的功能?它是否以 vulkan 扩展的形式存在?
此外,我正在使用 Vulkan 内存分配器 (VMA)。如果有这样的 realloc
功能,我想要使用 VMA 和原始 vulkan 的两种解决方案。
VMA 和 Vulkan 扩展中没有 realloc
。
历史上有 vmaResizeAllocation()
,但已被弃用,现在已不存在。
对于增长,您需要预期并预先分配一些额外的大小,或者获得新的分配。对于收缩,你可以使用你已有的内存,或者获得一个新的。
如果获得新分配,则必须进行显式复制,这也可能对同步产生影响。所以它有点超出了 VMA 的范围,而且对于许多分配器算法来说可能也不是那么好。
假设我 运行 想更改 vulkan 缓冲区 (VkBuffer) 的大小。例如,如果我想向现有顶点缓冲区添加更多顶点。我如何 grow/shrink VkBuffer?我会被迫只创建一个新缓冲区并放弃旧缓冲区,还是有类似于 C 的 realloc
的功能?它是否以 vulkan 扩展的形式存在?
此外,我正在使用 Vulkan 内存分配器 (VMA)。如果有这样的 realloc
功能,我想要使用 VMA 和原始 vulkan 的两种解决方案。
VMA 和 Vulkan 扩展中没有 realloc
。
历史上有 vmaResizeAllocation()
,但已被弃用,现在已不存在。
对于增长,您需要预期并预先分配一些额外的大小,或者获得新的分配。对于收缩,你可以使用你已有的内存,或者获得一个新的。
如果获得新分配,则必须进行显式复制,这也可能对同步产生影响。所以它有点超出了 VMA 的范围,而且对于许多分配器算法来说可能也不是那么好。