gpt4 book ai didi

c - Vulkan:无效的着色器模块对象

转载 作者:行者123 更新时间:2023-11-30 16:56:44 25 4
gpt4 key购买 nike

我编写了一个小型 Vulkan 测试应用程序来熟悉 Vulkan,尽管我在尝试创建管道时遇到了问题。

vkCreateGraphicsPipeline 导致验证层产生以下错误:无效的着色器模块对象 0x8无效的着色器模块对象 0x9

然后程序在验证层内崩溃。我为顶点着色器和片段着色器创建了一个 VkShaderModule,并使用 glslangvalidator -V 将它们转换为 vkCreateShaderModule 没有提示的 SPIR-V 模块。

有什么我可能错过的吗?这些例子似乎和我做事的方式完全一样。

最佳答案

错误消息和层崩溃行为指向一个无效的 Vulkan 对象句柄(例如,在使用之前未能成功执行 vkCreate*d 或 vkDestroyed 的对象),由 VK_LAYER_LUNARG_object_tracker 验证层。

如果验证层全部启用并且按照规定的顺序,则它们可能不会崩溃。仅使用 VK_LAYER_LUNARG_standard_validation 元层即可确保这一点。

与任何优秀的验证器一样,弱小的人类完全无法读取错误消息。
标准验证层在 GitHub/KhronosGroup/Vulkan-LoaderAndValidationLayers/layers 中开源,因此如果有疑问,可以搜索给定的消息文本。通常它位于 core_validation.cpp 中,但在您的情况下,它将位于 object_tracker.cpp 中。 (该消息将采用 printf 格式,例如“无效的 %s Object 0x%”,这使得搜索变得更加困难)。

关于c - Vulkan:无效的着色器模块对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39823449/

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