SDL2 で画像を表示する

 SDL2 で画像を表示するには、ビットマップを読み込んで、サーフェスを作成し、テクスチャに変えます。そして、renderer を使ってコピーします。

 SDL2 だけであれば、bmp ファイルを扱えます。それ以外のファイル形式は、SDL2_image を使うと読み込みができます。

 bmp ファイルから SDL_Surface を作成するには、SDL_LoadBMP() 関数を使います。引数は読み込む bmp ファイルです。

 作成したサーフェスは、SDL_CreateTextureFromSurface() 関数でテクスチャにすることができます。引数はレンダラとサーフェスです。

 テクスチャは、SDL_RenderCopy() 関数で画面に表示できます。引数はレンダラ、サーフェス、コピー元の SDL_Rect、コピー先の SDL_Rect です。コピー元は NULL だと全体を表します。コピー先を NULL にすると、画面全体になります。この時拡大、縮小を行います。

 まとめると、以下のようになります。

SDL_Renderer *renderer;
SDL_Surface *image;
SDL_Texture *bitmapTex;
・
・
image = SDL_LoadBMP("test.bmp");
bitmapTex = SDL_CreateTextureFromSurface(renderer, image);
SDL_FreeSurface(image);
SDL_RenderCopy(renderer, bitmapTex, NULL, NULL);
・
・
SDL_RenderPresent(renderer);
SDL_DestroyTexture(textTex);

 SDL_RenderCopy() 関数の代わりに SDL_RenderCopyEx() 関数を使うと画像の回転ができます。

SDL2

Posted by sirius