Vulkan/VkPresentModeKHR
呈现模式:
对于交换链对显示模式的设置应该是最重要的,因为它代表实际显示图像到屏幕的时机。在Vulkan中有四种显示模式:
1.VK_PRESENT_MODE_IMMEDIATE_KHR
1.VK_PRESENT_MODE_IMMEDIATE_KHR
由应用提交的图像立刻被传输到屏幕。这种方式可能导致图像不完整。
2.VK_PRESENT_MODE_FIFO_KHR
2.VK_PRESENT_MODE_FIFO_KHR
交换链是一个队列,当显示器刷新时,显示器从队列头获取图像,程序将渲染后的图像从队尾插入。
若队列满则等待。这与现代游戏中的水平同步很类似。显示器刷新的时机称为“vertical blank”.
3.VK_PRESENT_MODE_FIFO_RELAXED_KHR
3.VK_PRESENT_MODE_FIFO_RELAXED_KHR
此模式区别于上一个模式的地方在于在最后一个“vertical blank”的时候,应用程序图像未到来而队列是空的
当图像到队列时,不会等到下一个"vertical blank"的时候再显示到屏幕,而是立即显示到屏幕,这会导致可见的图形的不完整。
4.VK_PRESENT_MODE_MAILBOX_KHR
4.VK_PRESENT_MODE_MAILBOX_KHR
此模式为第二种模式的又一变种,当队列满的时候,应用程序并不会阻塞而是简单的将队尾的图像替换为新的。
此模式可用于实现三缓冲。只有VK_PRESENT_MODE_FIFO_KHR模式被保证绝对存在,因此,我们需要查询最优的可用模式。