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

# SDL_CreateWindowAndRenderer

ウィンドウとデフォルトのレンダラを生成する

## 構文

`int SDL_CreateWindowAndRenderer(int width, int height, Uint32 window_flags, SDL_Window** window, SDL_Renderer** renderer)`

## 引数

width | ウィンドウの幅
height | ウィンドウの高さ
window_flags | ウィンドウを生成するときに使うフラグ (SDL_CreateWindow()を参照すること)
window | 生成されたウィンドウを代入するポインタ, 失敗のときはNULL
renderer | 生成されたレンダラを代入するポインタ, 失敗のときはNULL

## 戻り値

成功のとき0, 失敗のとき-1を戻す. SDL_GetError()を呼んで詳細を知ることができる.

## サンプルコード

``

    #include "SDL.h"

    int main(int argc, char *argv[])
    {
        SDL_Window *window;
        SDL_Renderer *renderer;
        SDL_Surface *surface;
        SDL_Texture *texture;
        SDL_Event event;

        if (SDL_Init(SDL_INIT_VIDEO) < 0) {
            SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "SDLを初期化できなかった: %s", SDL_GetError());
            return 3;
        }

        if (SDL_CreateWindowAndRenderer(320, 240, SDL_WINDOW_RESIZABLE, &window, &renderer)) {
            SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "ウィンドウとレンダラーを生成できなかった: %s", SDL_GetError());
            return 3;
        }

        surface = SDL_LoadBMP("sample.bmp");
        if (!surface) {
            SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "画像からサーフェイスを生成できなかった: %s", SDL_GetError());
            return 3;
        }
        texture = SDL_CreateTextureFromSurface(renderer, surface);
        if (!texture) {
            SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "サーフェイスからテクスチャを生成できなかった: %s", SDL_GetError());
            return 3;
        }
        SDL_FreeSurface(surface);

        while (1) {
            SDL_PollEvent(&event);
            if (event.type == SDL_QUIT) {
                break;
            }
            SDL_SetRenderDrawColor(renderer, 0x00, 0x00, 0x00, 0x00);
            SDL_RenderClear(renderer);
            SDL_RenderCopy(renderer, texture, NULL, NULL);
            SDL_RenderPresent(renderer);
        }

        SDL_DestroyTexture(texture);
        SDL_DestroyRenderer(renderer);
        SDL_DestroyWindow(window);

        SDL_Quit();

        return 0;
    }

## 関連項目(関数)

SDL_CreateRenderer
SDL_CreateWindow

## SDL Wikiへのリンク

SDL_CreateWindowAndRenderer - SDL Wiki