创建完Vulkan实例后,需要查找当前可用的硬件设备,其实就是GPU之类的一些图形设备。而一旦创建Vulkan实例,Vulkan就知道有些什么可用的设备。所以,可调用Vulkan的vkEnumeratePhysicalDevices获取设备。设备和Vulkan的关系类似以下方式:
先介绍一下vkEnumeratePhysicalDevices。函数声明如下:
VkResult vkEnumeratePhysicalDevices(
VkInstance instance,
uint32_t* pPhysicalDeviceCount,
VkPhysicalDevice* pPhysicalDevices
);
此函数第一个参数就是Vulkan实例,第二个参数是物理设备的个数的指针,第三个参数VkPhysicalDevice类型的数组。
获取设备列表的大概步骤如下:
// Get the number of devices (GPUs) available.
VkResult res = vkEnumeratePhysicalDevices(info.inst, &gpu_count, NULL);
// Allocate space and get the list of devices.
info.gpus.resize(gpu_count);
res = vkEnumeratePhysicalDevices(info.inst, &gpu_count, info.gpus.data());
在我自己的电脑上,目前只有一个显卡,所以,gpu_count等于1。gpus是一个vecor,也只有一个元素。