现在的位置: 首页 > 综合 > 正文

SOIL库加载纹理

2017年12月16日 ⁄ 综合 ⁄ 共 957字 ⁄ 字号 评论关闭

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


抱歉!评论已关闭.