目次 - 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