如何将获得的SwapChain图像返回给SwapChain?

时间:2016-10-13 20:51:11

标签: vulkan

我现在可以获得交换链图像,绘制它然后呈现它。在vkQueuePresentKHR之后,图像返回到交换链。还有其他方法可以返回图像。我不想将渲染的数据显示在屏幕上。

2 个答案:

答案 0 :(得分:4)

您可以通过简单地不将图像呈现给设备来完成您想要的操作。但是,您可以获得的图像数量取决于您设备的VkSurfaceCapabilities。

应用程序可以从此交换链同时获取的最大图像数是通过从交换链中的图像数中减去VkSurfaceCapabilitiesKHR :: minImageCount并添加1来获得的。

在我的设备上,我可以使用8张图像交换链,minImageCount为2,让我一次获得7张图像。

答案 1 :(得分:3)

如果您真的想以任何理由废弃框架,请不要展示图像并在下次迭代时重复使用(不要获取新图像;使用您已有的图像。)

如果有可能你永远不会使用一些Swapchain图像,你仍然不需要担心它。当Swapchain被销毁时,获得的图像将被回收(未提供)。

现在查看您的使用评论,我必须添加您仍然需要同步。并且不保证是循环的。这听起来很错误。创建Swapchain似乎与创建和绑定Image的内存相同。考虑到结果不是"如何使用" ...

从实际角度来看,您可能没有很好的Swapchain图像格式,类型和用法标记选择,它们可能会受到您可以使用的大小和数量的限制。它可能不会跨平台很好地工作。它也可能会受到性能影响。

TL; DR交换链用于与OS的窗口系统(或其缺少)的交互。对于其他用途,有适当的非Swapchain命令和对象。

不可否认的是,Vulkan有时候写作不太简洁(它是基于C的产品,相当低级别,并且抽象出类似GPU的广泛硬件),但你提出的技术并不是一种可行的方法。 。你需要习惯它,并在适当的地方制作你自己的抽象(或使用一个库来做)。