- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我开始使用 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
如果您处理多个 VkInstance
或 VkDevice
,则必须将加载的函数分派(dispatch)到正确的实例或设备。例如,我在这里(可能效率低下)这样做:
https://github.com/krOoze/Hello_Triangle/blob/a691de5/ExtensionLoader.h
关于Vulkan 加载 vkCreateDebugReportCallbackEXT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39106564/
我开始使用 Vulkan 时偶然发现了我的第一个问题。尝试创建调试报告回调时(验证层和调试扩展在我的英特尔 hd vulkan 驱动程序上可用,至少它是这么说的),它没有告诉我 vkCreateDeb
作为 Vulkan 新手,我看到教程中使用了 vkCreateDebugUtilsMessengerEXT,它看起来类似于 OpenGL Debug Output extension .两者也共享相同
作为 Vulkan 新手,我看到教程中使用了 vkCreateDebugUtilsMessengerEXT,它看起来类似于 OpenGL Debug Output extension .两者也共享相同
我是一名优秀的程序员,十分优秀!