我正试图编写一个简单的基于vulkan的应用程序,但当试图将surface扩展添加到启用的扩展列表中时,如下所示:
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
的定义。有人能解释一下如何解决这个问题吗?
事实证明,我在项目设置中缺少一些预处理器指令:
VK_PROTOTYPES
VK_USE_PLATFORM_WIN32_KHR
我希望这些信息能帮助任何有同样问题的人。
这似乎是一个常见的问题,目前您可以通过添加特定的头来解决这个问题
#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