使用多个 DescriptorSets 与更多 Uniform 更新
Use of multiple DescriptorSets vs more Uniform updates
我刚开始学习 vulkan 并浏览了几个 tutorials/samples 我注意到了一些事情:每个人都使用 1 个结构进行统一加载,包含所有相关数据(模型、视图、投影矩阵等)。这些结构完全更新每一帧。
现在我的问题是:那是因为作者 "lazy" 而不是为单独的频率创建单独的 unform(例如投影,因为它只需要加载一次)他们只使用了 1 个结构,因为它不'需要额外的设置,还是因为加载 1 个 "bigger" 结构比创建多个集合时性能更好。
大多数 demo/example 代码是惰性的。通常这是为了避免使用结果不需要的概念使代码过于复杂。
此外,演示通常有 1 个绘制调用(仅渲染一个模型),因此无需更改其中的描述符集。
更改频率也在单个命令缓冲区的记录范围内。因此,如果您有一个在帧持续时间内保持不变的视图矩阵,那么您可以将它与投影矩阵一起放在布局的开头。
我刚开始学习 vulkan 并浏览了几个 tutorials/samples 我注意到了一些事情:每个人都使用 1 个结构进行统一加载,包含所有相关数据(模型、视图、投影矩阵等)。这些结构完全更新每一帧。
现在我的问题是:那是因为作者 "lazy" 而不是为单独的频率创建单独的 unform(例如投影,因为它只需要加载一次)他们只使用了 1 个结构,因为它不'需要额外的设置,还是因为加载 1 个 "bigger" 结构比创建多个集合时性能更好。
大多数 demo/example 代码是惰性的。通常这是为了避免使用结果不需要的概念使代码过于复杂。
此外,演示通常有 1 个绘制调用(仅渲染一个模型),因此无需更改其中的描述符集。
更改频率也在单个命令缓冲区的记录范围内。因此,如果您有一个在帧持续时间内保持不变的视图矩阵,那么您可以将它与投影矩阵一起放在布局的开头。