Vulkan のドキュメントには、WSI プラットフォームに関する次の記述があります。
Vulkan API は、どのタイプのプラットフォーム オブジェクトも定義しません。プラットフォーム固有の WSI 拡張機能が定義されています。これには、WSI を使用するためのプラットフォーム固有の機能が含まれています。これらの拡張機能の使用は、プリプロセッサ シンボルによって保護されています。
• VK_USE_PLATFORM_ANDROID_KHR - Android
• VK_USE_PLATFORM_MIR_KHR - ミール
• VK_USE_PLATFORM_WAYLAND_KHR - ウェイランド
• VK_USE_PLATFORM_WIN32_KHR - Microsoft Windows
• VK_USE_PLATFORM_XCB_KHR - XCB ライブラリを使用した X Window System
• VK_USE_PLATFORM_XLIB_KHR - Xlib ライブラリを使用した X ウィンドウ システム
プラットフォームまたはウィンドウ システムを選択し、コンパイル前に正しいシンボルを定義する必要があることを理解しています。Android または Windows に対してコンパイルする場合、次のように記述できます。
#if defined(ANDROID) || defined (__ANDROID__)
#define VK_USE_PLATFORM_ANDROID_KHR 1
#elif defined(_WIN32)
#define VK_USE_PLATFORM_WIN32_KHR 1
#endif
これまでのところ、OK。Android と Windows には独自のウィンドウ システムがあり、これで十分です。しかし、Linuxにはいくつかのウィンドウシステムがあります-Xlib、XCB、Wayland、およびMIRです。
どのウィンドウ システムがその環境で使用されているかを知るのに役立つ可能性がある C/C++プリプロセッサ シンボルがあるかどうかを知りたいので、混乱することなく各 API を処理できる汎用コードを記述できます。