Vulkan无法找到验证层

发布于 2025-01-21 07:07:49 字数 1173 浏览 3 评论 0原文

我正在关注Vulkan教程,当我尝试检查验证层支持时。 当应该返回true时,该函数始终返回false。 这是代码:

bool app::checkValidationLayersSupport() {
uint32_t layersCount = 0;
vkEnumerateInstanceLayerProperties(&layersCount, nullptr);

std::vector<VkLayerProperties> availableLayers(layersCount);
vkEnumerateInstanceLayerProperties(&layersCount, availableLayers.data());
std::cout << layersCount << "\n";


for (const char* layerName : validationLayers) {
    std::cout << layerName << "\n";
    for (const auto& layerProperties : availableLayers) {
        if (strcmp(layerName, layerProperties.layerName) == 0) {
            std::cout << layerProperties.layerName << std::endl;
            return true;
        }
    }
}

return false;}

validationlayers值是{“ vk_layer_khronos_validation”}(std :: vector&lt; const&lt; const char*&gt;)

vkenumerateStancelayerRayerProperties vkenumerateInstancelayerProperties无法更改availablelayers的值,因此它仍然是空的

编辑: 我检查了一下,第二个vkenumerateInstancelayerProperties正在初始化矢量,但所需的验证层不在其中。

修复:我重新安装了SDK

I'm following a vulkan tutorial and when i'm trying to check for validation layer support.
the function always returns false when it is supposed to return true.
this is the code:

bool app::checkValidationLayersSupport() {
uint32_t layersCount = 0;
vkEnumerateInstanceLayerProperties(&layersCount, nullptr);

std::vector<VkLayerProperties> availableLayers(layersCount);
vkEnumerateInstanceLayerProperties(&layersCount, availableLayers.data());
std::cout << layersCount << "\n";


for (const char* layerName : validationLayers) {
    std::cout << layerName << "\n";
    for (const auto& layerProperties : availableLayers) {
        if (strcmp(layerName, layerProperties.layerName) == 0) {
            std::cout << layerProperties.layerName << std::endl;
            return true;
        }
    }
}

return false;}

validationLayers value is { "VK_LAYER_KHRONOS_validation" } (std::vector<const char*>)

after vkEnumerateInstanceLayerProperties LayersCount value is 5 so i think the problem is that the second vkEnumerateInstanceLayerProperties can't change the value of availableLayers so it remains empty

edit:
I checked it and the second vkEnumerateInstanceLayerProperties is initializing the vector but the needed validation layer is not in it.

fix: i reinstalled the sdk

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文