如何在 Vulkan 中获得支持的扩展

How to get supported extensions in Vulkan

我正在开发一个使用 Vulkan 的 C++ 应用程序。我如何获得支持的扩展集?

std::set<std::string> get_supported_extensions()这样的签名是最理想的。

vkEnumerateInstanceExtensionPropertiesAPI就是这样做的。

std::set<std::string> get_supported_extensions() {
    uint32_t count;
    vkEnumerateInstanceExtensionProperties(nullptr, &count, nullptr); //get number of extensions
    std::vector<VkExtensionProperties> extensions(count);
    vkEnumerateInstanceExtensionProperties(nullptr, &count, extensions.data()); //populate buffer
    std::set<std::string> results;
    for (auto & extension : extensions) {
        results.insert(extension.extensionName);
    }
    return results;
}