[英]Vulkan has problems loading “vkCreateDebugUtilsMessengerEXT” function address
上下文:我使用带有最新驱动程序的 gtx 760、windows 10 和最新版本的 vulkan。 我目前在他们的主页(Vulkan`s)上关注本教程的这一部分: https://vulkan-tutorial.com/en/Drawing_a_triangle/Setup/Validation_layers
本教程使用 GLFW 来创建 window(在我的代码中使用)和一个在我的代码中未使用的线性代数数学库。
编码:
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;
}
}
我得到打印“错误扩展不存在”的 else 分支。 我确实在 VkInstanceCreateInfo.ppEnabledExtensionsNames 中设置了 VK_EXT_DEBUG_REPORT_EXTENSION_NAME。 如果您认为有必要对其进行审查/测试,这是我的完整代码: https://github.com/quartuxz/VulcanDoesntWork
(是的,我知道存储库使用“vulcan”而不是“vulkan”,我的错;这就是我对它的新认识)
那么问题是为什么在以下情况下加载 function 地址会失败:
vulkan 是否改变了它的这个特定部分的工作方式? 这个 function 有替代品吗? 为什么我加载不了这个function的地址?
您必须设置的不是 VK_EXT_DEBUG_REPORT_EXTENSION_NAME,而是:VK_EXT_DEBUG_UTILS_EXTENSION_NAME。 还要确保您的 vulkan sdk 安装状况良好,您的驱动程序也必须是最新的。 为了安全起见,在完成我提到的最后两件事后尝试重新启动计算机。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.