可以在 vulkan 中将多个子通道与单个管道一起使用吗

s00*_*007 5 vulkan

VkGraphicsPipelineCreateInfo有整数成员subpass

我的用例是创建单个管道对象并将其与多个子通道一起使用。每个子通道都有不同的颜色附件。

Nic*_*las 5

否。管道始终是相对于特定渲染通道的特定子通道构建的。它不能用于任何其他子通道:

当前渲染通道的子通道索引必须等于创建当前绑定到时指定subpassVkGraphicsPipelineCreateInfo结构成员。VkPipelineVK_PIPELINE_BIND_POINT_GRAPHICS

您将需要创建多个管道,一个用于您打算使用它的每个子通道。对于不太关心这一点的实现,管道缓存应该使其高效。

  • 此外,想要对多个子通道使用相同的管道并不是子通道常见用例的典型特征。如果您想这样做,这可能表明有一种更简单或更有效的方法可以完成您想做的事情。通常在多子通道渲染通道中,每个子通道执行整体渲染算法的不同子算法,因此着色器(以及管线)将不同。 (2认同)