首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用DevIL读取图像

使用DevIL读取图像
EN

Stack Overflow用户
提问于 2012-06-09 05:51:17
回答 1查看 561关注 0票数 1

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

代码语言:javascript
复制
ilInit();
ILuint ImageName;
ilGenImages(1, &ImageName);
ilBindImage(ImageName);
wchar_t* imgFilename = L"..\\..\\resources\\textures\\red.png"; 
ilLoadImage(imgFilename);
ILubyte* texture = ilGetData();

当我检查第一个像素时

代码语言:javascript
复制
for (int i=0; i<64; i++) cout << (int)texture[i] << endl;

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

我也试着使用ilut

代码语言:javascript
复制
ilutRenderer(ILUT_OPENGL);
GLuint t = ilutGLLoadImage(L"..\\..\\resources\\textures\\red.png");

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

有人能帮我处理DevIL吗?

EN

回答 1

Stack Overflow用户

发布于 2015-05-03 07:47:43

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

代码语言:javascript
复制
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.

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

代码语言:javascript
复制
glBindTexture(GL_TEXTURE_2D, ind);

然后将纹理的UV坐标指定给顶点:

代码语言:javascript
复制
glTexCoord2f(x1, y1);               
glVertex3f(x, y, z);

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10956442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档