我不能debugPrintfEXT
上班。我不明白我错过了什么。
我采取的步骤:
VK_EXT_debug_utils
;使用 Nvidia Nsight 进行验证。#extension GL_EXT_debug_printf : enable
到顶点着色器。debugPrintfEXT("Foo")
顶点着色器。代码:
vk::InstanceCreateInfo createInfo;
std::vector valFeaturesEnabled = {vk::ValidationFeatureEnableEXT::eDebugPrintf};
vk::ValidationFeaturesEXT valFeatures;
valFeatures.enabledValidationFeatureCount = (uint32_t) valFeaturesEnabled.size();
valFeatures.pEnabledValidationFeatures = valFeaturesEnabled.data();
createInfo.setPNext(&valFeatures);
细节:
你在做什么应该有效。
我通过对 Khronos Vulkan-Samples 中的“hello triangle”示例进行了一些小的更改来使其工作。
通过使用 CMake 选项进行构建-DVKB_VALIDATION_LAYERS=ON
或通过在hello_triangle.cpp
. 由于项目在 Debug 构建中激活验证层,如果您坚持使用 Debug 构建,则可以跳过此步骤。
#define VKB_VALIDATION_LAYERS
将VK_DEBUG_REPORT_INFORMATION_BIT_EXT
标志添加到debug_report_create_info.flags
. 此要求的文档尚不清楚,但很快就会修复。你已经在这样做了。
在调用之前添加以下代码vkCreateInstance
。它与您粘贴的代码基本相同。
VkValidationFeatureEnableEXT enabled[] = {VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT};
VkValidationFeaturesEXT features{VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT};
features.disabledValidationFeatureCount = 0;
features.enabledValidationFeatureCount = 1;
features.pDisabledValidationFeatures = nullptr;
features.pEnabledValidationFeatures = enabled;
features.pNext = instance_info.pNext;
instance_info.pNext = &features;
并对您所做的顶点着色器进行相同的更改。
如果您可以使用此示例使其工作,也许您会看到您在应用程序中所做的不同。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句