gpt4 book ai didi

Vulkan 加载 vkCreateDebugReportCallbackEXT

转载 作者:行者123 更新时间:2023-12-01 12:26:27 33 4
gpt4 key购买 nike

我开始使用 Vulkan 时偶然发现了我的第一个问题。尝试创建调试报告回调时(验证层和调试扩展在我的英特尔 hd vulkan 驱动程序上可用,至少它是这么说的),它没有告诉我 vkCreateDebugReportCallbackEXT 是一个未解析的符号。尝试获取函数指针时失败,告诉我 vkCreateDebugReportCallbackEXT 已定义。

它是什么,在 Vulkan header 中。我可以设置 VK_NO_PROTOTYPES 但我必须手动加载所有内容。有没有解决的办法?仅对函数指针使用不同的名称是行不通的,因为我使用的是 Vulkan-Hpp,它按原样使用 vkCreateDebugReportCallbackEXT。这是一个驱动程序错误,告诉我调试扩展可用,但没有?

顺便说一句,我正在使用 VS2015。

感谢您的帮助

最佳答案

这很正常。 vulkan.h 将它们定义为全局函数。但是加载器命令显然返回函数指针

通常您会使用您喜欢的不同名称。但我也喜欢有规范的名字......

我通过自己定义函数(使用 vulkan.h 中的声明)来解决这个问题,然后调用加载的指针:

VKAPI_ATTR VkResult VKAPI_CALL vkCommandEXT( /*...*/ ){
return fpCommandEXT( /*...*/ );
}

(无耻的 self 推销)像这样:
https://github.com/krOoze/Hello_Triangle/blob/8227220/ErrorHandling.h#L181

我让命令在第一次使用时自动加载——如果你不喜欢那样,在较早的提交中我有更传统的加载器:
https://github.com/krOoze/Hello_Triangle/blob/699ab57/HelloTriangle.cpp#L731

附言:
Khronos 自己只是添加了加载程序代码,很好地说明了这一点:
https://github.com/KhronosGroup/Vulkan-Docs/blob/1.0/src/ext_loader/vulkan_ext.c

如果您处理多个 VkInstanceVkDevice,则必须将加载的函数分派(dispatch)到正确的实例或设备。例如,我在这里(可能效率低下)这样做:
https://github.com/krOoze/Hello_Triangle/blob/a691de5/ExtensionLoader.h

关于Vulkan 加载 vkCreateDebugReportCallbackEXT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39106564/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com