第一章「SDLの基本的な使い方」第九話


今回、ついに画像ファイルを扱います!!
その前に、SDL_image という、画像関係のライブラリはダウンロードしたでしょうか?
今回の関数は、そのSDL_imageを使用するので、まだの人は準備してください。

SDL

(注:コンパイラ環境によって必要なものが違います。詳しくは ここなどで紹介されています)

IMG_Load()

頭にSDLがついていませんが、SDL_image.hで定義されている SDLの関数です。

名前のとおり、この関数は画像を読み込みます。引数に画像のファイル名を指定して、
SDL_Surface型に代入します。

screen = IMG_Load("sample.png");

ファイル名の前後に""を忘れないようにしましょう。 では、ソースに加えてみます。

#include <stdio.h> #include "SDL/SDL.h" #include "SDL/SDL_image" //新機能を使うので忘れないように。 #pragma comment(lib, "SDL.lib") #pragma comment(lib, "SDLmain.lib") #pragma comment(lib, "SDL_image.lib") //これも一緒に忘れないように。 bool Init(void); //初期処理 bool Event(void); //イベント処理 void End(void); //終了処理 SDL_Surface *screen; SDL_Surface *img; //画像を保存しておくために、別のSDL_Surface型を用意。 int main(int argc, char* argv[]) { if(!Init()) //初期化&確認 { printf("初期化に失敗しました"); return 0; } img = IMG_Load("sample.png"); //これでimgには、sample.pngが入りました。 while(1) //メインループ { SDL_Flip(screen); if(!Event()) //イベント確認 { break; //イベントがfalseなら、ループを抜ける } SDL_Delay(100); } End(); //終了処理へ return 0; } ・・・以下省略・・・



画像を読み込んだものの、画面には現れません。
メインのscreenに、imgの情報を送らなければなりませんね。
単純にscreen=imgとはできません。専用の関数があります。
次回はその関数をご紹介します。

〜〜第十話へ〜〜