Vulkan 渲染 - 表面的一部分

Vulkan Rendering - Portion of Surface

如何在Surface的一部分渲染一个vulkan framebuffer(vkImage)? 当我在帧缓冲区中绘制时,vulkan 使用 vkColorClear 清除所有表面。

表面有 800x600,但我希望 vulkan 渲染 300x200,例如使用偏移量 100x100。

您可以通过将 VkGraphicsPipelineCreateInfo 结构中的视图矩形和视口设置为您希望渲染的子区域来子集 window。您可以使用 vkCmdSetViewport().

在绘制时动态配置视口

对于VkCmdClearAttachments(),您可以通过pRects参数设置空白区域(它忽略视口)。

当您开始渲染通道时,您需要提供 VkRenderPassBeginInfo 对象。在这个对象中是 renderArea 矩形,它定义了渲染通道将影响的每个附件图像的区域。该区域之外的任何附件像素都不受渲染过程操作的影响,包括清除加载操作和 vkCmdClearAttachments.

请注意,renderArea 受渲染区域粒度的限制,如从 vkGetRenderAreaGranularity 查询的那样。