目次 - API(機能別) - 初期化と終了 - SDL_Init

# SDL_Init

SDLライブラリを初期化する. 他のほとんどのSDLの関数を呼び出す前にこの関数を呼ぶ必要がある.

## 構文

`int SDL_Init(Uint32 flags)`

## 引数

flags | サブシステム初期化フラグ

## 戻り値

成功のとき0, エラーのとき負の数のエラーコードを戻す. SDL_GetError()を呼んで詳細を知ることができる.

## サンプルコード

``

    #include "SDL.h"

    int main(int argc, char* argv[]) {
        if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) != 0) {
            SDL_Log("SDLを初期化できなかった: %s", SDL_GetError());
            return 1;
        }

        /* ... */

        SDL_Quit();
        return 0;
    }

## 詳細

SDL_Init()は単純にSDL_InitSubSystem()に処理を渡している. よって, これら2つは入れ替えられる. コードが読みやすさを考慮するならば, SDL_InitSubSystem()の方がよいかもしれない.

ファイルI/O, そしてスレッドサブシステムはデフォルトで初期化される. メッセージボックス(SDL_ShowSimpleMessageBox()もビデオサブシステムを初期化せずに使える. 他のサブシステムを使うときは指定して初期化しなければならない.

ログも初期化せずに使うことができる.

flagsは以下の項目の論理和で複数設定できる:

SDL_INIT_TIMER | タイマ サブシステム
SDL_INIT_AUDIO | オーディオ サブシステム
SDL_INIT_VIDEO | ビデオ サブシステム. イベントサブシステムも自動的に初期化される
SDL_INIT_JOYSTICK | ジョイスティック サブシステム. イベントサブシステムも自動的に初期化される
SDL_INIT_HAPTIC | ハプティクス(感覚フィードバック) サブシステム
SDL_INIT_GAMECONTROLLER | コントローラー サブシステム. ジョイスティックサブシステムも自動的に初期化される
SDL_INIT_EVENTS | イベント サブシステム
SDL_INIT_SENSOR |
SDL_INIT_EVERYTHING | 上記のサブシステムの全て
SDL_INIT_NOPARACHUTE | 互換性のために存在する. このフラグは機能しない

サブシステムの初期化は参照カウントされている. そのため, 手動で正常にサブシステムを終了させるためには, それぞれのSDL_InitSubSystem()に対してSDL_QuitSubSystem()を呼ぶ(またはSDL_Quit()を呼んで強制的に終了する)必要がある. サブシステムが既に読み込まれている場合は, この関数を呼ぶと参照カウントが加算される.

## バージョン

SDL 2.0.0以降

## 関連項目(関数)

SDL_InitSubSystem
SDL_Quit
SDL_SetMainReady
SDL_WasInit

## SDL Wikiへのリンク

SDL_Init - SDL Wiki