DevIL で画像を読み込もうとして、OpenGL でテクスチャを作成しようとすると、問題が発生します。私の友人が彼の Windows で私のプログラムをテストしたとき、テクスチャを含むはずの四角形はすべて白く、画像 (テクスチャ) はありませんでした。この問題は、Windows XP、Windows Vista、および Windows 7 でのみ発生するようですが、すべての Windows PC で発生するわけではありません。私の Windows XP では問題なくプログラムが実行されます。
いくつかの DLL やファイルが見つからない (ありそうもない) か、画像をロードしたり、テクスチャとして使用したりできない何かが存在する可能性があります。一方、プログラムは *UNIX システム上で問題なく動作します。
これは、画像を読み込んでテクスチャを生成するために使用しているコードです。
void Image::load(const char* filename)
{
ILuint ilimg;
ilGenImages(1, &ilimg);
ilBindImage(ilimg);
if (!ilLoadImage(filename))
throw ImageLoadError;
glGenTextures(1, &image);
glBindTexture(GL_TEXTURE_2D, image);
bpp = ilGetInteger(IL_IMAGE_BPP);
width = ilGetInteger(IL_IMAGE_WIDTH);
height = ilGetInteger(IL_IMAGE_HEIGHT);
format = ilGetInteger(IL_IMAGE_FORMAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, bpp, width, height, 0, format,
GL_UNSIGNED_BYTE, ilGetData());
ilDeleteImages(1, &ilimg);
}
これは、テクスチャが適用された四角形を描画するコードです。
void Rect::show()
{
glPushAttrib(GL_CURRENT_BIT);
glEnable(GL_TEXTURE_2D);
glColor4f(1.0, 1.0, 1.0, opacity);
glBindTexture(GL_TEXTURE_2D, texture->get_image());
glBegin(GL_POLYGON);
glTexCoord2i(0, 0); glVertex2f(x, y);
glTexCoord2i(1, 0); glVertex2f(x+width, y);
glTexCoord2i(1, 1); glVertex2f(x+width, y+height);
glTexCoord2i(0, 1); glVertex2f(x, y+height);
glEnd();
glDisable(GL_TEXTURE_2D);
glPopAttrib();
}
私が言及していない他のコードが必要な場合は、私に尋ねてください。投稿します。