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

SDL_Vulkan_GetInstanceExtensions

SDL_Vulkan_CreateSurfaceで必要なVulkanインスタンスイクステンションの名前を得る

構文

SDL_bool SDL_Vulkan_GetInstanceExtensions(SDL_Window* window, unsigned int* pCount, const char** pNames)

引数

windowVulkanインスタンスイクステンションを必要とするウィンドウ (将来廃止される)
pCountイクステンションの数を代入するunsigned intポインタ
namesNULLまたはVulkanインスタンスイクステンションの配列を書き込むポインタ

戻り値

成功のときSDL_TRUE, 失敗のときSDL_FALSEを戻す.

サンプルコード

unsigned int count;
if (!SDL_Vulkan_GetInstanceExtensions(window, &count, nullptr)) handle_error();

std::vector<const char*> extensions = {
    VK_EXT_DEBUG_REPORT_EXTENSION_NAME // サンプルとして追加するイクステンション
};
size_t additional_extension_count = extensions.size();
extensions.resize(additional_extension_count + count);

if (!SDL_Vulkan_GetInstanceExtensions(window, &count, extensions.data() + additional_extension_count)) handle_error();

// Now we can make the Vulkan instance
VkInstanceCreateInfo create_info = {};
create_info.enabledExtensionCount = static_cast<uint32_t>(extensions.size());
create_info.ppEnabledExtensionNames = extensions.data();

VkInstance instance;
VkResult result = vkCreateInstance(&create_info, nullptr, &instance);

詳細

pNameがNULLならば, 必要なVulkanインスタンスイクステンションの数がpCountに代入される. NULLでなければ, pCountにはpNames配列の要素数へのポインタである必要がある. そして, 関数の呼び出し後は実際に書き込んだpNameの数が上書きされる. pCountが必要なイクステンションの数より少なければ, pCount個まで書き込まれる. pCountが必要なイクステンションの数より小さければ, SDL_FALSEを戻すので全てのイクステンションが得られなかったことがわかる.

メモ: windowはSDL 2.0.8では必要だが, この引数は将来廃止される予定である.

バージョン

2.0.8以降

関連項目(関数)

SDL_Vulkan_CreateSurface

SDL Wikiへのリンク

SDL_Vulkan_GetInstanceExtensions - SDL Wiki