rat*_*eak 5 framebuffer vulkan
一个可呈现的图像开始于VK_IMAGE_LAYOUT_UNDEFINED但VK_IMAGE_LAYOUT_PRESENT_SRC_KHR在它们被呈现一次之后。
很多例子做的过渡vkImages,以VK_IMAGE_LAYOUT_PRESENT_SRC_KHR立即创建后vkSwapchain。这允许他们使用VK_IMAGE_LAYOUT_PRESENT_SRC_KHRfor oldLayout。但是不允许在创建交换链后立即进行转换。
可呈现图像的使用必须仅在图像由 返回之后
vkAcquireNextImageKHR和由 呈现之前发生vkQueuePresentKHR。这包括转换图像布局和渲染命令。
我有哪些选项可以正确处理交换链图像布局?
有3个选项。从最好到最坏的顺序(IMO):
只需将 renderPass 中附件的 initialLayout 设置VK_IMAGE_LAYOUT_UNDEFINED为VK_IMAGE_LAYOUT_UNDEFINED每次或过渡。这是允许的,并且意味着您不关心图像中的数据。大多数情况下,您无论如何都会清除或完全覆盖图像。
[VkImageMemoryBarrier] 的有效用法
[...]
- oldLayout 必须是
VK_IMAGE_LAYOUT_UNDEFINED,VK_IMAGE_LAYOUT_PREINITIALIZED或者是受屏障影响的图像区域的当前布局
跟踪哪些图像已经通过管道,并oldLayout在记录 commandBuffer 时相应地选择。
在创建交换链后进行转换,但使用vkAcquireNextImageKHR和vkQueuePresentKHR确保应用程序在转换时拥有图像。无法保证您获得图像的顺序因此有可能永远不会返回一张图像。
| 归档时间: |
|
| 查看次数: |
2689 次 |
| 最近记录: |