NeHe教程里第六课使用glaux来加载纹理位图,但是glaux 库已经弃用。新的NeHe第六课教程中推荐了SOIL库。(下载,可以在这里获取能直接使用的文件)
SOIL库是一个小型的C语言库,用来加载纹理到OpenGL。它基于stb_image 1.16。
详情:http://www.lonesock.net/soil.html
我们使用时只需要简单的把SOIL.h SOIL.lib添加到工程就可以了。
bmp文件的使用:
在InitGL()中调用LoadGlTextures()函数:
int LoadGLTextures() // Load Bitmaps And Convert To Textures { /* load an image file directly as a new OpenGL texture */ texture[0] = SOIL_load_OGL_texture ( "Data/NeHe.bmp", SOIL_LOAD_AUTO, SOIL_CREATE_NEW_ID, SOIL_FLAG_INVERT_Y ); if(texture[0] == 0) return false; // Typical Texture Generation Using Data From The Bitmap glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); return true; // Return Success }
unsigned int SOIL_load_OGL_texture(
const char *filename,
int force_channels,
unsigned int reuse_texture_ID,
unsigned int flags);
第一个参数为文件名;
第二个说明符,SOIL_LOAD_AUTO表示使用我们磁盘载入的;
第三个表示让SOIL为我们创建一个ID;
第四个参数SOIL_FLAG_INVERT_Y允许我们做是翻转Y轴
返回值,0表示失败,其他表示OpenGL上下文句柄
效果:
代码:code