To clear one or more regions of color and depth/stencil attachments inside a render pass instance, call:
void vkCmdClearAttachments( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
commandBuffer
is the command buffer into which the command will be
recorded.
attachmentCount
is the number of entries in the pAttachments
array.
pAttachments
is a pointer to an array of VkClearAttachment
structures defining the attachments to clear and the clear values to
use.
rectCount
is the number of entries in the pRects
array.
pRects
points to an array of VkClearRect
structures defining
regions within each selected attachment to clear.
vkCmdClearAttachments
can clear multiple regions of each attachment
used in the current subpass of a render pass instance.
This command must be called only inside a render pass instance, and
implicitly selects the images to clear based on the current framebuffer
attachments and the command parameters.
The VkClearRect
structure is defined as:
typedef struct VkClearRect { VkRect2D rect; uint32_t baseArrayLayer; uint32_t layerCount; } VkClearRect;
rect
is the two-dimensional region to be cleared.
baseArrayLayer
is the first layer to be cleared.
layerCount
is the number of layers to clear.
The layers [baseArrayLayer
, baseArrayLayer
+
layerCount
) counting from the base layer of the attachment image view
are cleared.
The VkClearAttachment
structure is defined as:
typedef struct VkClearAttachment { VkImageAspectFlags aspectMask; uint32_t colorAttachment; VkClearValue clearValue; } VkClearAttachment;
aspectMask
is a mask selecting the color, depth and/or stencil
aspects of the attachment to be cleared.
aspectMask
can include VK_IMAGE_ASPECT_COLOR_BIT
for color
attachments, VK_IMAGE_ASPECT_DEPTH_BIT
for depth/stencil
attachments with a depth component, and
VK_IMAGE_ASPECT_STENCIL_BIT
for depth/stencil attachments with a
stencil component.
If the subpass’s depth/stencil attachment is VK_ATTACHMENT_UNUSED
,
then the clear has no effect.
colorAttachment
is only meaningful if
VK_IMAGE_ASPECT_COLOR_BIT
is set in aspectMask
, in which
case it is an index to the pColorAttachments
array in the
VkSubpassDescription
structure of the current subpass which
selects the color attachment to clear.
If colorAttachment
is VK_ATTACHMENT_UNUSED
then the clear
has no effect.
clearValue
is the color or depth/stencil value to clear the
attachment to, as described in Clear Values below.
No memory barriers are needed between vkCmdClearAttachments
and
preceding or subsequent draw or attachment clear commands in the same
subpass.
The vkCmdClearAttachments
command is not affected by the bound
pipeline state.
Attachments can also be cleared at the beginning of a render pass instance
by setting loadOp
(or stencilLoadOp
) of
VkAttachmentDescription
to VK_ATTACHMENT_LOAD_OP_CLEAR
, as
described for vkCreateRenderPass
.