SDL_Surface* SDL_LoadBMP_RW(SDL_RWops* src, int freesrc)
src | データストリーム |
freesrc | 0以外のとき読み終えたときストリームを閉じる |
const char *image_path = "myimage.bmp";
/* "rb" は "読込 バイナリ" を表す */
SDL_RWops *file = SDL_RWFromFile(image_path, "rb");
/* freesrcが真なのでファイルは自動的に閉じる */
SDL_Surface *image = SDL_LoadBMP_RW(file, SDL_TRUE);
/* ファイルの読み込みに失敗したらユーザに知らせる */
if (!image) {
printf("画像の読み込みに失敗した %s: %s¥n", image_path, SDL_GetError());
return;
}
/* ここで画像を使う */
/* 最後にサーフェイスの資源を解放する */
SDL_FreeSurface(image);
生成されたサーフェイスはSDL_FreeSurface()で解放する必要がある. そうしないとメモリリークを引き起こすだろう.
srcはSDL_RWopsバッファで, 通常はSDL_RWFromFile()で読み込む. この関数の代わりに, SDL_LoadBMP()マクロを使ってビットマップファイルを読み込み, それをSDL_Surfaceに変換した後にファイルをクローズしてもよい.