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

SDL_GetWindowSurface

ウィンドウのSDLサーフェイスを得る

構文

SDL_Surface* SDL_GetWindowSurface(SDL_Window* window)

引数

window調査するウィンドウ

戻り値

成功のときウィンドウのサーフェイスを, 失敗のときNULLを戻す. SDL_GetError()を呼んで詳細を知ることができる.

サンプルコード

#include "SDL.h" // SDLヘッダをインクルードする

int main(int argc, char* argv[])
{
    SDL_Surface *screen; // SDL2でも同じ. 古いコードを持ってくることができる
    SDL_Window *window;
    SDL_Surface *image;

    SDL_Init(SDL_INIT_VIDEO); // ビデオを初期化する

    // 普通にウィンドウを生成する
    window = SDL_CreateWindow("SDL2 Example", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480, 0);

    // しかし, 代わりにレンダラーを生成する. これで画面に直接描画できる
    screen = SDL_GetWindowSurface(window);

    // ここは古いコードと同じである
    image = SDL_LoadBMP("box.bmp"); // 画像を読み込む
    SDL_BlitSurface(image, NULL, screen, NULL); // スクリーンに転送する
    SDL_FreeSurface(image);

    // これはSDL 1.2のSDL_Flipのように働く
    SDL_UpdateWindowSurface(window);

    // 2秒間表示する
    SDL_Delay(2000);
    SDL_DestroyWindow(window);
    SDL_Quit();
    return 0;
}

詳細

もし生成されることが必要ならば, 新しいサーフェイスはウィンドウに最適なピクセル形式で生成される. このサーフェイスはウィンドウが破棄されたとき解放される. このサーフェイスを解放しようとしてはならない.

このサーフェイスはウィンドウのサイズが変わると無効になる. サイズが変わった後は正しいサーフェイスを得るために再びこの関数を呼ぶ必要がある.

このことはウィンドウと3DまたはレンダリングAPIの結びつきと同じではない.

この関数はSDL_HINT_FRAMEBUFFER_ACCELERATIONの影響を受ける.

関連項目(関数)

SDL_UpdateWindowSurface
SDL_UpdateWindowSurfaceRects

SDL Wikiへのリンク

SDL_GetWindowSurface - SDL Wiki