DevILを用いた画像ファイルの読み込み
// #include <IL/il.h> // ilu.hもインクルードするなら不要 #include <IL/ilu.h> ILuint image; unsigned int width, height; // 初期化(ilとiluをこの順番で初期化する) ilInit(); iluInit(); // イメージ名(識別番号)を生成 ilGenImages(1, &image); // 生成した名前をバインド ilBindImage(image); // ファイルから画像をロード if (ilLoad(imageFile)) { width = ilGetInteger(IL_IMAGE_WIDTH); height = ilGetInteger(IL_IMAGE_HEIGHT); // 画素の並びが逆の場合は入れ替える if (ilGetInteger(IL_IMAGE_ORIGIN) != IL_ORIGIN_LOWER_LEFT) { iluFlipImage(); } } else { ILenum err = ilGetError(); std:cerr << iluErrorString(err) << std::endl; } // 後始末 ilDeleteImage(1, &image);
テクスチャに使う
// テクスチャ名を生成 GLuint texName; glGetTextures(1, &texName); // 使うイメージ名をバインド ilBindImage(image); // テクスチャの設定 glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBindTexture(GL_TEXTURE_2D, texName); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LENEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LENEAR); glTexImage2D(GL_TEXTURE_2D, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, ilGetData()); : // 後始末 glDeleteTextures(1, &texName);
まとめ
初期化
ilInit();iluInit();
ilutRenderer(ILUT_OPENGL);
名前付け
ILvoid ilGenImages(ILsizei Num, ILuint *Images);
ILvoid ilBindImages(ILuint Image);
ILvoid ilDeleteImages(ILsizei Num, ILuint *Images);読み込み
ILboolean ilLoadImage(const char *FileName);
ILboolean ilLoad(ILenum Type, const char *FIleName);
ILboolean ilLoadF(ILenum Type, ILHANDLE File);
ILboolean ilLoadL(ILenum Type, ILvoid *Lump, ILuint Size);保存
ILboolean ilSaveImage(const char *FileName);
ILboolean ilSave(ILenum Type, const char *FileName);
ILboolean ilSaveF(ILenum Type, ILHANDLE File);
ILboolean ilSaveL(ILenum Type, ILvoid *Lump, ILunit Size);画像の操作
ILboolean ilTexImage(ILuint Width, ILuint Height, ILuint depth, ILubyte Bpp, ILenum, Format, ILenum Type, ILvoid *Data);画像データの取得
ILubyte* ilGetData(ILvoid);
ILuint ilCopyPixels(ILuint XOff, ILuint YOff, ILuint ZOff, ILuint Width, ILunit Height, ILunit Depth, ILenum Format, ILenum Type, ILvoid *Data);画像のコピー
ILboolean ilCopyImage(ILuint Src);
ILboolean ilOverlayImage(ILuint Src, ILint XCoord, ILint YCoord, ILint ZCoord);
ILboolean ilBlit(ILuint Src, ILint DestX, ILint DestY, ILint DestZ, ILuint SrcX, ILuint SrcY, ILuint SrcZ, ILuint width, ILuint Height, ILuint Depth);エラー処理
ILenum ilGetError(ILvoid);
const char* iluErrorString(ILenum Error);