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
查询的那样。
如何在Surface的一部分渲染一个vulkan framebuffer(vkImage)? 当我在帧缓冲区中绘制时,vulkan 使用 vkColorClear 清除所有表面。
表面有 800x600,但我希望 vulkan 渲染 300x200,例如使用偏移量 100x100。
您可以通过将 VkGraphicsPipelineCreateInfo
结构中的视图矩形和视口设置为您希望渲染的子区域来子集 window。您可以使用 vkCmdSetViewport()
.
对于VkCmdClearAttachments()
,您可以通过pRects
参数设置空白区域(它忽略视口)。
当您开始渲染通道时,您需要提供 VkRenderPassBeginInfo
对象。在这个对象中是 renderArea
矩形,它定义了渲染通道将影响的每个附件图像的区域。该区域之外的任何附件像素都不受渲染过程操作的影响,包括清除加载操作和 vkCmdClearAttachments
.
请注意,renderArea
受渲染区域粒度的限制,如从 vkGetRenderAreaGranularity
查询的那样。