目次 - API(機能別) - ディスプレイとウィンドウ - SDL_GetClosestDisplayMode

SDL_GetClosestDisplayMode

要求に最も近いディスプレイモードを検索する

構文

SDL_DisplayMode* SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode* mode, SDL_DisplayMode* closest)

引数

displayIndex調査するディスプレイの番号
mode要求するSDL_DisplayMode
closest要求に最も近い利用可能なモードを代入するSDL_DisplayModeのポインタ

戻り値

成功のときclosestへのポインタ, 利用可能なディスプレイモードがないときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる.

サンプルコード

// SDL2のSDL_GetClosestDisplayMode()を使う

#include "SDL.h"
#include <stdio.h>

int main(int argc, char* argv[]) {

    // 代入される構造体を宣言する
    SDL_DisplayMode target, closest;

    SDL_Init(SDL_INIT_VIDEO);

    // 要求する解像度等を設定する
    target.w = 600;
    target.h = 500;
    target.format = 0;  // 無視される
    target.refresh_rate = 0; // 無視される
    target.driverdata   = 0; // 0で初期化する
    printf("要求: \t%dx%dpx @ %dhz \n", target.w, target.h, target.refresh_rate);

    // ディスプレイモードをSDL_GetClosestDisplayに参照呼び出しで渡す
    // そして戻り値がNULLでないかチェックする
    if (SDL_GetClosestDisplayMode(0, &target, &closest) == NULL)

        // 戻り値がNULLならば, 一致するモードが見つからなかった
        printf("\n一致するディスプレイモードが見つからなかった!\n\n");

    else
        // その他ならば, 最も近いディスプレイモードが使える
        // SDL_DisplayMode構造体をアクセスして受け取った値を見る
        printf("受信: \t%dx%dpx @ %dhz \n", closest.w, closest.h, closest.refresh_rate);

    // 終了処理を行いプログラムを終了する
    SDL_Quit();
    return 0;

}

詳細

利用可能なディスプレイモードが検索され, 要求と最も近いモードがclosestに代入される. modeのformatとrefresh_rateが0の場合, デスクトップのモードとなる. モードは, サイズを最優先で検索し, ピクセル形式は次の優先度となる. そして最後に更新周期をチェックする. 利用可能なモードが要求に対して小さすぎる場合, NULLを戻す.

関連項目(関数)

SDL_GetDisplayMode
SDL_GetNumDisplayModes

SDL Wikiへのリンク

SDL_GetClosestDisplayMode - SDL Wiki