ローダは、アプリケーションを Vulkan のレイヤや Vulkan のインストール可能なクライアントドライバ(ICD - installable client drivers)にマッピングする役割を担います。
ローダインターフェイスに沿っていれば、誰でも独自の Vulkan Loader を作ることができます。リファレンスローダをビルドすることもできますし、特定のプラットフォーム用の Vulkan SDK からビルドされたバージョンを取得することもできます。
Vulkan ヘッダは、Vulkan 関数のプロトタイプを提供するだけです。Vulkan アプリケーションをビルドする際には、ローダにリンクしなければ、Vulkan 関数への未定義の参照に関するエラーが発生します。ローダをリンクするには、直接リンクと間接リンクの2つの方法がありますが、これを「静的リンクと動的リンク」と混同してはいけません。
-
コンパイル時の直接リンク
-
このためには、ビルドシステムが見つけることのできる、ビルドされた Vulkan Loader(静的または動的ライブラリ)が必要です。
-
ビルドシステム(Visual Studio、CMakeなど)には、ライブラリへのリンク方法に関するドキュメントがあります。オンラインで "(InsertBuildSystem) link to external library" と検索してみてください。
-
-
実行時の間接リンク
-
動的シンボルルックアップ(
dlsym
やdlopen
などのシステムコールを用いる)を使用することで、アプリケーションは独自のディスパッチテーブルを初期化することができます。これにより、ローダが見つからない場合はアプリケーションが正常に失敗できます。また、アプリケーションが Vulkan 関数を呼び出すための最速のメカニズムを提供します。 -
Volkは、このプロセスを簡素化するためのメタローダのオープンソース実装です。
-
各プラットフォームは、Vulkan Loader をどのように実行するかについて、独自のルールを設定できます。
Vulkan に対応している Android デバイスでは、OS にすでに Vulkan Loader が組み込まれています。
Android NDK には、間接リンクのための vulkan_wrapper.c/h ファイルが用意されています。これが必要なのは、ベンダーや OEM デバイスによって Vulkan Loader が異なる場合があるからです。
Vulkan SDK は、Linux 用にビルド済みローダを提供しています。
Vulkan SDK の Getting Started ページでは、Linux でのローダの見つけ方を説明しています。
Vulkan SDK はMacOS 用にビルド済みローダを提供しています。
Vulkan SDK の Getting Started ページでは、MacOS でのローダの見つけ方を説明しています。
Vulkan SDK はWindows 用にビルド済みローダを提供しています。
Vulkan SDK の Getting Started ページでは、Windows でのローダの見つけ方を説明しています。