跳转至

vkGetPhysicalDeviceSurfaceFormatsKHR

函数原型

1
2
3
4
5
VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
    VkPhysicalDevice                            physicalDevice,
    VkSurfaceKHR                                surface,
    uint32_t*                                   pSurfaceFormatCount,
    VkSurfaceFormatKHR*                         pSurfaceFormats);

描述

查询surface支持的交换链色彩格式空间。

参数

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

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

  • pSurfaceFormatCount : 可用格式数量的整数指针。

  • pSurfaceFormats : NULL或者 VkSurfaceFormatKHR 结构体数组指针。

    • pSurfaceFormats 为NULL时,pSurfaceFormatCount 返回可用格式数量;
    • pSurfaceFormats 不为NULL时,写入 pSurfaceFormatCount 个颜色格式信息到 pSurfaceFormats中。

补充

VkSurfaceFormatKHR 结构体定义:

1
2
3
4
typedef struct VkSurfaceFormatKHR {
    VkFormat           format;
    VkColorSpaceKHR    colorSpace;
} VkSurfaceFormatKHR;

返回值

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

代码示例

1
2
3
4
5
6
7
8
9
// 查询表面支持格式
uint32_t formatCount;
// 像素格式、色彩空间
vector<VkSurfaceFormatKHR> formats;
vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, nullptr);
if (formatCount != 0) {
    formats.resize(formatCount);
    vkGetPhysicalDeviceSurfaceFormatsKHR(device, surface, &formatCount, formats.data());
}