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());
}