我正在尝试创建一个 vulkan 实例。这是我的代码:
vk::ApplicationInfo appInfo("Test", 1, nullptr, 0, 0);
vk::InstanceCreateInfo info;
info.pApplicationInfo(&appInfo);
vk::Instance instance;
const auto result = vk::createInstance(&info, nullptr, &instance);
std::cout << vkResultToString(result) << std::endl;
但是,这会返回 VK_ERROR_INCOMPATIBLE_DRIVER。
如果我不提供自己的ApplicationInfo
,而是使用默认构造的,它可以工作。
在规范中它说
如果
apiVersion
为 0,则实现必须忽略它,否则如果实现不支持请求apiVersion
,则必须返回VK_ERROR_INCOMPATIBLE_DRIVER
如您所见,我设置apiVersion
为 0。据我了解,它不应该给我VK_ERROR_INCOMPATIBLE_DRIVER
错误。
这是一个错误还是我忘记了什么或想错了?
编辑:
在规范的 html 版本中,关于忽略的部分apiVersion
不存在。规范的 pdf 版本是否已经过时?
编辑:
如果我设置apiVersion
为 1.0.3 它也可以:
std::bitset<32> apiVersion;
apiVersion.set(22);
apiVersion.set(1);
apiVersion.set(0);
vk::ApplicationInfo appInfo("Test", 1, nullptr, 0, apiVersion.to_ulong());