我的任务是“将图像读入像素图,然后将其转换为纹理贴图”。因此,只有像素图部分,听我说,并告诉我,如果我有正确的想法,如果有一个更简单的方法。我使用的库文件:http://www.imagemagick.org/Magick++/Documentation.html使用ImageMagic库将图像转换为像素图
读取图像:
Image myimage;
myimage.read("myimage.gif");
我想这是我的pixmap需要阅读“形象”为:
GLubyte pixmap[TextureSize][TextureSize][3];
所以我想我需要一个循环,对于每个“像素映射”像素索引,从相应的“图像”像素索引中分配R,G,B值。我想循环体是这样的:
pixmap[i][j][0] = myimage.pixelColor(i,j).redQuantum(void);
pixmap[i][j][1] = myimage.pixelColor(i,j).greenQuantum(void);
pixmap[i][j][2] = myimage.pixelColor(i,j).blueQuantum(void);
但我觉得上面的函数返回我需要GLubytes Quantum的,所以任何人都可以提供帮助吗?
- 或 -
也许我可以用OpenIL(这里文档:http://openil.sourceforge.net/tuts/tut_10/index.htm)照顾像素映射和纹理映射二者。想想我可以简单地按顺序调用它们吗?
ilutOglLoadImage(char *FileName);
ilutOglBindTexImage(ILvoid);
实际上,OpenIL看起来很简单。请看看我上面的编辑。这就是你要打的电话吗?我会尝试一下;如果它有效,这个答案会得到一个很大的检查。 – Rooster
“只需使用要加载的文件名称调用ilutOglLoadImage,它就会直接将图像加载到OpenGL纹理中,然后删除所有不必要的本地数据。” (来自OpenIL手册)返回的GLuint是一个OpenGL纹理句柄。 – tbalazs
除ilut.h外还有别的东西吗我必须#include?由于ilutRenderer(ILUT_OPENGL)有效,但iluOglLoadImage“未在此范围内声明” – Rooster