用DevIL读取图像

时间:2012-06-08 21:51:17

标签: opengl devil

我在使用DevIL 1.7.8读取图像时遇到问题。 到目前为止,我知道以下代码段应该有效:

ilInit();
ILuint ImageName;
ilGenImages(1, &ImageName);
ilBindImage(ImageName);
wchar_t* imgFilename = L"..\\..\\resources\\textures\\red.png"; 
ilLoadImage(imgFilename);
ILubyte* texture = ilGetData();

当我检查第一个像素时

for (int i=0; i<64; i++) cout << (int)texture[i] << endl;

我得到一个相当随机的输出。这张照片实际上是红色的。

我也尝试过使用ilut

ilutRenderer(ILUT_OPENGL);
GLuint t = ilutGLLoadImage(L"..\\..\\resources\\textures\\red.png");

但实际上我甚至不能包含相应的头文件,因为在该头文件中,il.h被链接,它应该位于不存在的文件夹(\ IL)中。即使我创建此文件夹并将所需的头文件复制到其中,我也会遇到编译错误。

任何人都可以帮助我使用DevIL吗?

1 个答案:

答案 0 :(得分:0)

我正在阅读图像和绑定纹理,如下所示:

ilEnable(IL_ORIGIN_SET);
ilOriginFunc(IL_ORIGIN_LOWER_LEFT); // set [0,0] of texture to bottom left corner

ilImage image;
GLuint ind;
glGenTextures(1, &ind);
glBindTexture(GL_TEXTURE_2D, ind);
image.Load(L"<path>");//  or just name.format  be sure to have image in correct folder.

渲染时,首先需要绑定正确的纹理:

glBindTexture(GL_TEXTURE_2D, ind);

然后将纹理的UV坐标分配给顶点:

glTexCoord2f(x1, y1);               
glVertex3f(x, y, z);

不要忘记启用GL_TEXTURE_2D或您正在使用的任何类型。