使用 vkCmdBeginRenderPass 清除所有图层(Vulkan,分层渲染)

Clear all Layers with vkCmdBeginRenderPass (Vulkan, Layered rendering)

我有一个带有一种颜色附件的帧缓冲区,它是一个具有 6 层的立方体贴图。我尝试将分层渲染与几何着色器一起使用。将一个简单的三角形渲染到所有层都可行。但我不确定如何使用 vkCmdBeginRenderPass 清除所有图层。

vkCmdBeginRenderPass 支持 pClearValuesclearValueCount 但我不能指定层数。所以只清除了第一层。将 clearValueCount 设置为 6 并给出 6 个清除值也无济于事。

我看到vkCmdClearAttachments似乎允许指定图层。

vkCmdClearAttachments 是唯一的方法吗,还是我错过了什么?尽管渲染似乎渲染到所有层,但 vkCmdBeginRenderPass 只清除第一层可能是有原因的吗?

clearValueCount 指的是要清除的附件数量(关于它们的 clearOp),而不是帧缓冲区的层数。

帧缓冲区的渲染过程开始时要清除的层数(如果 clearOp 设置为清除)是通过其 imageView 子资源的 layerCount 指定的。