SDLは8つのサブシステムから構成されています。 それぞれ、オーディオ、CD-ROM、イベント、 ファイル入出力、ジョイスティック、スレッド、タイマー、ビデオです。 これらのサブシステムを使う前に、 SDL_Init (または SDL_InitSubSystem)を 使って初期化する必要があります。 SDL_Initは他のあらゆるSDL関数を呼び出しに 先立って呼びだしておく必要があります。 イベント、ファイル入出力、スレッドのサブシステムは自動的に 初期化され、パラメータで、初期化したい他のサブシステムを指定することが できます。 例えば、デフォルトのサブシステムと、ビデオのサブシステムを初期化したい ときは以下のようになります:
SDL_Init ( SDL_INIT_VIDEO );デフォルトのサブシステムと、ビデオ、それからタイマーのサブシステムを 初期化したいときは以下のようになります:
SDL_Init ( SDL_INIT_VIDEO | SDL_INIT_TIMER );
SDL_Initは、SDL_Quit(と、SDL_QuitSubSystem)と対になっています。 SDL_Quitはデフォルトのサブシステムを含む 全てのサブシステムをシャットダウンします。 SDLのアプリケーションが終了する前に常に呼び出す必要があります。
SDL_Init とSDL_Quitは、 どんな簡単なSDLアプリケーションであっても必ず含まれる必要があるものです。 エラーの処理も用意する必要があります。 多くのSDLの関数は、関数が成功したか失敗したかを 表す値を返します。 例えば SDL_Initは、サブシステムの初期化に失敗すると -1を返します。SDLでは、問題の追跡のためにとても便利な機能を提供しています。 SDL内でエラーが起きたときはいつでも、 そのエラーメッセージをSDL_GetErrorで得ることができます。 この機能を存分に使ってください。エラーを知る手掛りは いくら多くても困ることはありません。
Example 1-1. SDLの初期化
#include "SDL.h" /* 全てのSDLアプリケーションで必要です */
#include <stdio.h>
int main() {
printf("SDLの初期化をしています。\n");
/* ビデオとオーディオ、それからデフォルトのサブシステムを初期化 */
if((SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO)==-1)) {
printf("SDLの初期化ができませんでした: %s.\n", SDL_GetError());
exit(-1);
}
printf("SDLの初期化が完了しました。\n");
printf("SDLを終了しています。\n");
/* 全てのサブシステムをシャットダウンします */
SDL_Quit();
printf("終了します....\n");
exit(0);
}