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

# SDL_Vulkan_GetDrawableSize

ウィンドウのピクセルを書き込める層のサイズを得る. この関数はウィンドウと関連付けられたVkExtentのビューポートサイズやシザー矩形などの設定のために使われる

## 構文

`void SDL_Vulkan_GetDrawableSize(SDL_Window* window, int* w, int* h)`

## 引数

window | サイズを調べるSDL_Window
w | 幅を代入する変数へのポインタまたはNULL
h | 高さを代入する変数へのポインタまたはNULL

## サンプルコード

``

    // C++17ならばこれの代わりにstd::clamp()を使うこと
    #define CLAMP(x, lo, hi)    ((x) < (lo) ? (lo) : (x) > (hi) ? (hi) : (x))

    SDL_Window *window;
    VkSurfaceKHR surface;
    VkPhysicalDevice physicalDevice;

    // window = SDL_CreateWindow(...);
    if (!SDL_Vulkan_CreateSurface(window, instance, &surface)) {
        // handle error
    }
    // physicalDevice = ...;

    // ...

    // Swapchain生成

    VkSurfaceCapabilitiesKHR capabilities;
    vkGetPhysicalDeviceSurfaceCapabilitiesKHR(physicalDevice, surface, &capabilities);

    int width;
    int height;
    SDL_Vulkan_GetDrawableSize(window, &width, &height);

    width = CLAMP(width, capabilities.minImageExtent.width, capabilities.maxImageExtent.width);
    height = CLAMP(height, capabilities.minImageExtent.height, capabilities.maxImageExtent.height);

    // ...

    // vkCreateSwapchainKHR(...);

## 詳細

高DPIへのレンダリング, 例えば高DPI(Appleでは"Retina"と呼ばれる)に対応した環境でSDL_WINDOW_ALLOW_HIGHDPIを指定して生成したウィンドウの場合は, この関数が戻す値はSDL_GetWindowSize()とはおそらく異なる. そして, SDL_HINT_VIDEO_HIGHDPI_DISABLEDヒントで無効にすることはできない.

## バージョン

2.0.8以降

## 関連項目(関数)

SDL_CreateWindow
SDL_GetWindowSize
SDL_Vulkan_CreateSurface

## SDL Wikiへのリンク

SDL_Vulkan_GetDrawableSize - SDL Wiki