admin管理员组文章数量:1516870
学习vulkan有不短的时间了,几年前就遇到这个bug,直到最近才终于彻底解决了,泪目
本文记录了作者在使用Vulkan创建实例时,如果想加入调试回调以跟踪实例本身创建过程,遇到的问题及解决方法。
分类:笔记
如何在vulkan中开启验证层以调试
验证层并不是vulkan核心的功能,所以开启它需要扩展支持,主要的步骤有三个:
1.设置调试用的回调函数和回调句柄,这里的回调函数就是真正的处理函数,目前只有打印功能;
2.从地址中使用vkGetInstanceProcAddr加载代理函数,以将调试回调函数设置给回调句柄,这个设置函数vulkan没有直接提供,需要从地址中获取;
3.利用2得到的函数,将调试回调函数设置给回调句柄。
// 回调句柄
VkDebugUtilsMessengerEXT debugMessenger;// 只有打印功能的调试回调函数static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(
VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageType,const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,void* pUserData){
std::cerr <<"validation layer : "<< pCallbackData->pMessage << std::endl;return VK_FALSE;}// 2.使用vkGetInstanceProcAddr获取代理函数
VkResult CreateDebugUtilsMessengerEXT(VkInstance instance,const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,const VkAllocationCallbacks* pAllcator,
VkDebugUtilsMessengerEXT* pDebugMessenger){
auto func =(PFN_vkCreateDebugUtilsMessengerEXT)vkGetInstanceProcAddr(instance版权声明:本文标题:深入理解'Segment Fault':VKCreateInstance应用中的访问错误及对策 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.betaflare.com/biancheng/1772593974a3275520.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论