5

我正在尝试编写一个简单的基于 vulkan 的应用程序,但是在尝试将表面扩展添加到启用的扩展列表时,如下所示:

    enabledExtensions.push_back( VK_KHR_SURFACE_EXTENSION_NAME );
#if defined (_WIN32)
    enabledExtensions.push_back( VK_KHR_WIN32_SURFACE_EXTENSION_NAME );
#else
    enabledExtensions.push_back( VK_KHR_XCB_SURFACE_EXTENSION_NAME );
#endif

Visual Studio 抱怨这VK_KHR_WIN32_SURFACE_EXTENSION_NAME是未定义的。

当我右键单击它并转到定义时,它会打开 vulkan.h。经过检查,VK_USE_PLATFORM_WIN32_KHR我发现这也是未定义的,这阻止了VK_KHR_WIN32_SURFACE_EXTENSION_NAME. 有人可以解释如何解决这个问题吗?

4

2 回答 2

13

事实证明,我在项目设置中缺少一些预处理器指令:

VK_PROTOTYPES
VK_USE_PLATFORM_WIN32_KHR

我希望这个信息可以帮助任何有同样问题的人。

于 2016-03-23T20:48:59.260 回答
1

这似乎是一个常见问题,目前您可以通过添加特定标题来解决此问题

#if defined (_WIN32)
    #include <vulkan/vulkan_win32.h>
#elif defined(__linux__)
    #include <vulkan/vulkan_xcb.h>
#elif defined(__ANDROID__)
    #include <vulkan/vulkan_android.h>
#endif
于 2021-06-22T22:23:14.540 回答