跳到主要内容

vkGetPhysicalDeviceSurfacePresentModesKHR

函数原型

VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
VkPhysicalDevice physicalDevice,
VkSurfaceKHR surface,
uint32_t* pPresentModeCount,
VkPresentModeKHR* pPresentModes);

描述

查询surface支持的显式模式。

参数

  • physicalDevice : 创建交换链的物理设备。

  • surface : 与交换链关联的surface。

  • pPresentModeCount : 可用显示模式数量的整数指针。

  • pPresentModes : NULL或者 VkPresentModeKHR 结构体数组指针。

    • pPresentModes 为NULL时,pPresentModeCount 返回显示模式的数量;
    • pPresentModes 不为NULL时,写入 pPresentModeCount 个显式模式到 pPresentModes中。

补充

VkPresentModeKHR 枚举定义:

typedef enum VkPresentModeKHR {
VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
VK_PRESENT_MODE_MAILBOX_KHR = 1,
VK_PRESENT_MODE_FIFO_KHR = 2,
VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
// Provided by VK_KHR_shared_presentable_image
VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
// Provided by VK_KHR_shared_presentable_image
VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
} VkPresentModeKHR;

返回值

  • VK_SUCCESS : 查询成功。
  • 其他 : 查询失败。

代码示例

// 查询表面支持呈现模式
uint32_t presentModeCount;
// 可用的呈现模式
vector<VkPresentModeKHR> presentModes;
vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, nullptr);

if (presentModeCount != 0) {
presentModes.resize(presentModeCount);
vkGetPhysicalDeviceSurfacePresentModesKHR(device, surface, &presentModeCount, presentModes.data());
}