上下文:我使用gtx 760与最新的驱动程序,windows 10和vulkan的最新版本。我目前正在学习教程的这一部分,主要内容是(Vulkan`s的):https://vulkan-tutorial.com/en/Drawing_a_triangle/Setup/Validation_layers
本教程使用GLFW创建窗口(在我的代码中使用)和一个不在我的代码中使用的线性代数数学库。
守则:
VkResult CreateDebugUtilsMessengerEXT(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT*
pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pDebugMessenger) {
auto func = (PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance, "vkCreateDebugUtilsMessengerEXT");
if (func != nullptr) {
return func(instance, pCreateInfo, pAllocator, pDebugMessenger);
}
else {
std::cerr << "error extension not present"<<std::endl;
return VK_ERROR_EXTENSION_NOT_PRESENT;
}
}
我得到了打印“错误扩展不存在”的其他分支。我在VK_EXT_DEBUG_REPORT_EXTENSION_NAME中设置了VkInstanceCreateInfo.ppEnabledExtensionsNames。这是我的完整代码,如果您认为有必要检查/测试它:https://github.com/quartuxz/VulcanDoesntWork
(是的,我知道存储库使用的是"vulcan“而不是"vulkan",我的错;这是我对它的新发现)
那么,问题是为什么在以下情况下函数地址的加载失败:
我的vulkan的安装通过了所有完整性和有效性的测试。我的图形卡支持vulkan (以及运行调试vulkan函数所需的所有功能),并与驱动程序更新。使用VK_EXT_DEBUG_REPORT_EXTENSION_NAME
。
vulkan改变了它的这个特定部分的工作方式吗?除了这一功能之外,还有别的办法吗?为什么我不能加载这个函数的地址呢?
发布于 2020-07-25 01:12:14
您必须设置的不是VK_EXT_DEBUG_REPORT_EXTENSION_NAME,而是: VK_EXT_DEBUG_UTILS_EXTENSION_NAME。另外,请确保您的vulkan sdk安装处于良好状态,并且您的驱动程序必须是最新的。为了安全起见,在做完最后两件事之后,试着重新启动你的电脑。
https://stackoverflow.com/questions/63083195
复制相似问题