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

时间:2016-09-16 01:52:07

标签: vulkan

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

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

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

  3. 还是其他方法?

1 个答案:

答案 0 :(得分:1)

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

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