08/02/2020
文章目录
选择物理设备
有了VkInstance,就可以查看支持哪些物理设备。
选择显卡储存到VkPhysicalDevice的句柄中,当VkInstance被销毁的时候,会自动销毁VkPhysicalDevice。
是否有显卡
确保有一个显卡
void pickPhysicalDevice()
{
//list GPU cards
uint32_t deviceCount = 0;
vkEnumeratePhysicalDevices(instance, &deviceCount, nullptr);
if (deviceCount == 0) //保证有一个显卡
{
throw std::runtime_error("failed to find GPUs with Vulkan support");
}
std::vector<VkPhysicalDevice> devices(deviceCount);
std::cout << "Physical Device Count: " << deviceCount << std::endl;
vkEnumeratePhysicalDevices(instance, &deviceCount, devices.data());
for (const auto& device : devices)
{
if (isDeviceSuitable(device))
{
physicalDevice = device;
break;
}
}
if (physicalDevice == VK_NULL_HANDLE)
{
throw std::runtime_error("failed to find a suitable GPU");
}
}
物理设备属性和特性
查看显卡属性和特性