int SDL_InitSubSystem(Uint32 flags)
flags | SDL_Init()と同じ |
/* ジョイスティックとビデオを分けて初期化する */
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("A Window",
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, 640, 480,
SDL_WINDOW_FULLSCREEN);
SDL_Renderer* renderer = SDL_CreateRenderer(window, -1, 0);
/* ここでビデオの処理を行う */
/* ジョイスティックサブシステムを初期化する */
SDL_InitSubSystem(SDL_INIT_JOYSTICK);
/* ここでビデオとジョイスティックの処理を行う */
/* 両方のシステムを終了する */
SDL_Quit();
SDL_Init()で初期化した後でもSDL_InitSubSystem()で未初期化のサブシステムを初期化することができる.
SDL_Init()はアサーションとクラッシュ保護を初期化し, その後SDL_InitSubSystem()を呼んでいる. それらの保護を回避したい場合は直接SDL_InitSubSystem()を呼ぶとよい.
サブシステムの初期化は参照カウントされている. そのため, 手動で正常にサブシステムを終了させるためには, それぞれのSDL_InitSubSystem()に対してSDL_QuitSubSystem()を呼ぶ(またはSDL_Quit()を呼んで強制的に終了する)必要がある. サブシステムが既に読み込まれている場合は, この関数を呼ぶと参照カウントが加算される.