目次 - API(機能別) - 2Dレンダリング - SDL_RenderPresent

# SDL_RenderPresent

レンダリングの結果を画面に反映する

## 構文

`void SDL_RenderPresent(SDL_Renderer* renderer)`

## 引数

renderer | レンダリングコンテキスト

## サンプルコード

``

    #include "SDL.h"

    int main(int argc, char* argv[])
    {
            SDL_Window* window;
            SDL_Renderer* renderer;

            // SDLを初期化する
            if (SDL_Init(SDL_INIT_VIDEO) < 0)
                    return 1;

            // 描画するウィンドウを生成する
            window = SDL_CreateWindow("SDL_RenderClear",
                            SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
                            512, 512,
                            0);

            // ウィンドウへの描画で使うSDL_CreateRendererを生成する
            renderer = SDL_CreateRenderer(window, -1, 0);

            // 描画の色を選択する. ここでは赤を設定する
            SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);

            // 選択した色で画面を消去する
            SDL_RenderClear(renderer);

            // 上の描画は全て裏側で行われている
            // これで新たに表示され, ウィンドウが赤くなる
            SDL_RenderPresent(renderer);

            // ウィンドウを見せるために5秒待つ
            SDL_Delay(5000);

            // 全て終了する
            SDL_Quit();
            return 0;
    }

## 詳細

SDLのレンダリング関数は背面バッファを操作する. つまり, SDL_RenderDrawLine()のようなレンダリング関数を呼んでも, 背景バッファに線が描かれるだけで, 直接画面には描かれない. グラフィックを描いた後, 背景バッファを画面に反映させる必要がある.

よって, SDLレンダリングAPIを使う場合は, そのフレームを全て描き, そしてこの関数をフレームごとに呼んでユーザに見せる必要がある.

背景バッファは反映した後は無効になると考える必要がある. つまり, 前のフレームのグラフィックが残っているとみなしてはならない. 全てのピクセルを上書きする場合でも, 各フレームを描く前にSDL_RenderClear()を呼んで背景バッファを初期化することを強く推奨する.

## 関連項目(関数)

SDL_RenderClear
SDL_RenderDrawLine
SDL_RenderDrawLines
SDL_RenderDrawPoint
SDL_RenderDrawPoints
SDL_RenderDrawRect
SDL_RenderDrawRects
SDL_RenderFillRect
SDL_RenderFillRects
SDL_SetRenderDrawBlendMode
SDL_SetRenderDrawColor

## SDL Wikiへのリンク

SDL_RenderPresent - SDL Wiki