使用vulkan渲染多个网格的最佳实践

deb*_*air 8 vulkan

我有多个具有不同纹理/管道构造的网格,例如深度测试/混合函数,以使用vulkan进行渲染.在性能方面呈现它们的最佳实践是什么?

  1. 一个选项是创建n个命令缓冲区,其中n个线程用于n个网格,它们之间没有任何共享,布局,描述符,采样器或任何东西.如果我这样做,我应该使用n个辅助命令缓冲区和1个主要或所有这些将是次要的?

  2. 使用相同的命令缓冲区渲染n个网格,创建n个管道,n个用于制服和顶点数据的缓冲区.开始记录命令缓冲区然后在循环中,调用vkcmdDraw用于具有不同管道,缓冲区的n个网格.我能用这种方法渲染.但我如何使用多线程使其更快?

还是其他方法?

rat*_*eak 1

  1. 如果我们要在两个网格的渲染之间共享任何内容,那么我们需要同步。

你不知道;如果您共享的所有内容都是只读的,那么您不需要同步。唯一需要网格之间同步的情况是一个网格写入内存而另一个网格从中读取。管道的状态和颜色附件由实现同步,因此您不必担心这一点。