SDL は Simple DirectMedia Layer という名前が示す通り Simple に画面を生成できます。
このプロジェクトでは、簡単な描画を行うツールの作成に SDL を用いていきます。
SDL を用いて画面を生成するサンプル
SDL では画面の初期化をするときに SDL_OPENGL フラグを指定することで OpenGL を用いるよう指定できます。
多くの NVIDIA 系や Radeon 系のビデオカードでは OpenGL を使う際に Hardware Acceleration が可能なため SDL で OpenGL を指定すると高速な描画が期待できます。
SDL で OpenGL を使う場合、いくつかの関数は OpenGL 用に用意されたものを使う必要があります。
OpenGL を使う場合に利用する主な関数
int SDL_GL_LoadLibrary(const char *path); void* SDL_GL_GetProcAddress(const char* proc); int SDL_GL_SetAttribute(SDL_GLattr attr, int value); void SDL_GL_SwapBuffers(void); void SDL_GL_UpdateRects(int numrects, SDL_Rect* rects); void SDL_GL_Lock(void); void SDL_GL_Unlock(void);
SDL_Surface を OpenGL のテクスチャとして扱って描画するサンプルは SDL パッケージ中の test/testgl.c にあります。
SDL_Surface をテクスチャとして描画できるため SDL_image や SDL_ttf で生成される画像や文字列も同じ用にテクスチャとして描画できます。