ビットマップファイルが重すぎるので、別の形式の画像ファイルを使いたい、とか、透過pngを使いたいというときのために、SDL_imageライブラリがあります。
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
int main(int argc, char* argv[]){
SDL_Surface* image;
SDL_Rect rect, scr_rect;
SDL_Init(SDL_INIT_EVERYTHING);
SDL_SetVideoMode(640, 480, 32, SDL_HWSURFACE);
/* 画像読み込み */
image = IMG_Load("sample.png");
/* 画像の矩形情報設定 */
rect.x = 0;
rect.y = 0;
rect.w = image->w;
rect.h = image->h;
/* 画像配置位置情報の設定 */
scr_rect.x = 0;
scr_rect.y = 0;
/* サーフェスの複写 */
SDL_BlitSurface(image, &rect, SDL_GetVideoSurface(), &scr_rect);
/* サーフェスフリップ */
SDL_Flip(SDL_GetVideoSurface());
SDL_Delay(3000);
SDL_FreeSurface(image);
SDL_Quit();
return 0;
}
SDL_image.hをインクルードする必要があり、また、コンパイル時にSDL_imageへリンクしなければなりません。以下、コンパイルコマンド例
$ gcc test.c -lSDL -lSDL_image
SDL_Surface *IMG_Load(const char *file);
SDL_imageの関数で、様々な形式の画像ファイルを読み込みます。対応形式は、BMP, PNM (PPM/PGM/PBM), XPM, LBM, PCX, GIF, JPEG, PNG, TGA, TIFFです。
fileは画像ファイル名になります。