int SDL_Init(Uint32 flags)
flags | サブシステム初期化フラグ |
#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()を呼んで強制的に終了する)必要がある. サブシステムが既に読み込まれている場合は, この関数を呼ぶと参照カウントが加算される.