设置 ppEnabledExtensionNames 会导致 Vulkan 崩溃

Setting ppEnabledExtensionNames causes Vulkan crash

我正在尝试通过 vulkan-tutorial.com 学习 Vulkan,但我卡在了 Validation Layer 教程中。出于某种原因,将 ppEnabledExtensionNames 设置为任何 std::vector.data() 会使程序崩溃。

有问题的东西在debug.cpp

这是一个 link:https://pastebin.com/j7NTQsH0

如果有人可以查看代码并告诉我哪里出了问题,将不胜感激。

你的问题是validationLayers的范围。它是 initDebugging 函数的局部变量,而您在 initInstance 外部使用该函数中更新的 createInfo(指向该局部向量),此时 validationLayers 向量超出范围,createInfo->ppEnabledLayerNames 指向的所有值也超出范围。

要解决此问题,您需要复制或声明 validationLayers 中的值,以便它们在您调用 vkCreateInstance.

时仍然有效