Initializing SDL

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_InitSDL_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);
}