【发布时间】:2017-02-05 20:40:10
【问题描述】:
我正在开发一个使用 Vulkan 的 C++ 应用程序。如何获得支持的扩展集?
像std::set<std::string> get_supported_extensions() 这样的签名是理想的。
【问题讨论】:
标签: vulkan
我正在开发一个使用 Vulkan 的 C++ 应用程序。如何获得支持的扩展集?
像std::set<std::string> get_supported_extensions() 这样的签名是理想的。
【问题讨论】:
标签: vulkan
vkEnumerateInstanceExtensionProperties API 执行此操作。
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;
}
【讨论】:
VkResult 检查(ERROR 到 C++ 异常可能是一个不错的选择)。可能不会伤害任何执行do{ ... }while(VK_INCOMPLETE);; Vulkan-Hpp 也是一种选择