目次 - SDL 3.0 API(機能別) - Vulkanグラフィック - SDL_Vulkan_LoadLibrary

SDL_Vulkan_LoadLibrary

Vulkanライブラリの関数を動的に読み込む

ヘッダ

SDL3/SDL_vulkan.h

構文

bool SDL_Vulkan_LoadLibrary(const char *path);

引数

const char *paththe platform dependent Vulkan loader library name or NULL.

戻り値

(bool) 成功のとき真, 失敗のとき偽を戻す. SDL_GetError()を呼んで詳細を知ることができる.

詳細

この関数はビデオドライバを初期化した後に呼ばなければならないが, Vulkanウィンドウを生成する前でなければならない. もしVulkanローダライブラリを読み込まなければ, 最初のVulkanウィンドウを生成するときデフォルトのライブラリが読み込まれる.

SDLはこの関数の呼び出しが成功した回数を保持しているため, 最終的にSDL_Vulkan_UnloadLibraryの呼び出しと同じ回数であれば複数回呼んでも安全である. path引数はライブラリが読み込まれていれば無視され, SDL_Vulkan_UnloadLibraryを呼んでもこの関数の呼び出しと同じ回数でなければ実際にはアンロードされない.

Vulkanアプリケーションは, ライブラリを実行時に読み込むのではなく, libvulkanをリンクするのが一般的である. この場合, アプリケーションが動的ライブラリをリンクし, SDLが同じ検索パスを使用するならば正しく動作する.

pathがNULL以外の場合, アプリケーションがリンクしていたVulkanローダライブラリとアドレスが同一であることが保障されない限り, アプリケーションが使用する全てのVulkan関数をSDL_Vulkan_GetVkGetInstanceProcAddr()を使って動的ライブラリから読み込む必要がある.

Appleの機器の場合, pathをNULLにすると, SDLは現在のプロセスの全てのMach-oイメージからvkGetInstanceProcAddrアドレスを検索しようとする. Vulkanアプリケーションはlibvulkan(または静的リンクでよく使われていたMoltenVK)とリンクするのが一般的だからである. 見つからなかった場合, macOSではSDLはvulkan.framework/vulkan, libvulkan.1.dylib, MoltenVK.framework/MoltenVK, libMoltenVK.dylibの順に読み込もうとする. iOS SDLの場合はlibMoltenVK.dylibを読み込もうとする. アプリケーションには動的フレームワークか.dylibが同梱されている必要がある.

Appleの機器以外の場合, アプリケーションとlibvulkanとの静的リンクには対応していない. Vulkanローダとリンクしないか, 動的リンクライブラリとリンクするかのどちらかである.

スレッドセーフ

この関数はスレッドセーフではない.

バージョン

SDL 3.2.0以降

関連項目

SDL Wikiへのリンク

SDL_Vulkan_LoadLibrary - SDL Wiki