SOIL库加载纹理

时间:2021-04-08 04:49:47

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上下文句柄


效果:

SOIL库加载纹理

代码:code