Swapchain minImageCount和VK_PRESENT_MODE_IMMEDIATE_KHR是如何相互关联



如果我们按照我的理解分配VkSwapchainCreateInfoKHR.presentMode = VK_PRESENT_MODE_IMMEDIATE_KHR;,我们有一个缓冲区,图像立即被呈现到表面,但同时SwapChainDetails.surfaceCapabilities.minImageCount = 2;在我的GTX 1070。
minImageCount是否意味着缓冲区的最小数量应该是2 ?
它是如何工作的?

它们之间根本没有关系。你有多少缓冲区与它们如何显示无关。

立即显示意味着,当您呈现图像时,它会立即显示。如标准所述:

表示引擎不等待垂直空白期来更新当前图像

如果表示引擎只允许您使用一个交换链图像,那么这将意味着获取将不得不等待,直到完成图像的显示。这将使立即呈现毫无意义。

现在,您可能认为应该立即获得这样的图像。但这意味着您可以在表示引擎仍在读取图像时渲染图像,从而导致潜在的损坏。但这是不是直接表示的作用。即时呈现不会改变呈现引擎和用户代码之间的所有权动态;它只改变了交换链图像呈现的时间。

写入实际呈现的图像的能力是由"共享"控制的。(VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHRVK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR)

最新更新