SDLでOpenGLを使用します。GLライブラリを知ることは良いことです(最近、グラフィックス以外の高速化されたものの使用はほとんど見られません。GUIでさえ今はそれを使用しています)。SDL_imageには、アルファチャネルをチェックする方法があります。画像ファイルへのパスからテクスチャを作成する(SDL_imageのIMG_Load()関数を使用する)私の関数には、次のものがあります。
// if we successfully open a file
// do some gl stuff then
SDL_PixelFormat *format = surface->format;
int width, height;
width = pow2(surface->w);
height = pow2(surface->h);
SDL_LockSurface(surface); // Call this whenever reading pixels from a surface
/* Check for alpha channel */
if (format->Amask)
glTexImage2D(GL_TEXTURE_2D, 0, 4, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, surface->pixels);
else
glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, surface->pixels);
SDL_UnlockSurface(surface);
pow2()は、数値を次に近い2の累乗に丸めます。最近の多くのビデオカードは、テクスチャサイズの2の累乗以外の値を処理できますが、私が知る限り、それらは間違いなく最適化されていません(テスト済みのフレームレート)。他のビデオカードはレンダリングを拒否するだけで、アプリがクラッシュする可能性があります。
コードはここにあります:http ://www.tatsh.net/2010-06-19/using-sdlimage-and-sdlttf-opengl