jam*_*mes -2 graphics game-engine vulkan
最近我想知道一个游戏,如果有很多模型,每个模型都需要顶点缓冲区来绘制.如下三个选项,哪一个最有效?
你正在混淆两个不同的问题......内存管理和内存更新.
对于内存管理,OpenGL和Vulkan的传统智慧是您希望在底层API中进行少量分配并自行进行内存管理,以便您可以在不同偏移量的单个缓冲区中存储多个顶点数据集.这对于能够执行间接绘制至关重要,您可以在其中执行单个命令来渲染许多模型.因为您无法更改该命令中的绑定,所以只能渲染全部位于单个顶点缓冲区内的模型.
对于内存更新,您需要记住,并非所有内存都必须使用映射vkMapMemory.通常只能映射系统内存,而GPU本地内存则不能.当顶点数据在GPU上时,最佳性能将会出现,因此最佳做法是使用由可映射内存组成的暂存缓冲区,然后使用它转移到设备本地内存的实际缓冲区.