【发布时间】:2019-09-08 12:45:46
【问题描述】:
我正在将顶点数据生成到内存(从体素数据),设置暂存缓冲区(主机可见)(vkCreateBuffer),将顶点数据复制到暂存缓冲区,设置设备本地缓冲区(vkCreateBuffer)并将缓冲区从主机可见复制到设备本地 (vkCmdCopyBuffer)。
据我了解,我可以拥有的缓冲区数量是有限的,因此我可能无法为每个模型创建一个缓冲区。
对于静态模型,这很好,只需将它们混合在一起并上传即可。但我想“定期”修改一些随机顶点。为此,我正在考虑对设备本地缓冲区进行差异更新。因此,在一个大缓冲区中,我只更新实际更改的数据。这个可以吗?
如果我不从主机可见缓冲区渲染任何东西,那么它不会占用 GPU 上的任何资源吗?所以我可以保持主机可见的缓冲区,而不必重新创建和填充它们?
【问题讨论】:
-
您可以为应用程序创建的缓冲区数量没有限制。但是内存分配的数量是有限制的。见
VkPhysicalDeviceLimits::maxMemoryAllocationCount。
标签: vulkan