SOIL库加载纹理

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()函数:

[cpp]  view plain copy
  1. int LoadGLTextures()                                    // Load Bitmaps And Convert To Textures  
  2. {  
  3.     /* load an image file directly as a new OpenGL texture */  
  4.     texture[0] = SOIL_load_OGL_texture  
  5.         (  
  6.         "Data/NeHe.bmp",  
  7.         SOIL_LOAD_AUTO,  
  8.         SOIL_CREATE_NEW_ID,  
  9.         SOIL_FLAG_INVERT_Y  
  10.         );  
  11.    
  12.     if(texture[0] == 0)  
  13.         return false;  
  14.    
  15.    
  16.     // Typical Texture Generation Using Data From The Bitmap  
  17.     glBindTexture(GL_TEXTURE_2D, texture[0]);  
  18.     glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);  
  19.     glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);  
  20.    
  21.     return true;                                        // Return Success  
  22. }  

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


效果:


你可能感兴趣的:(OpenGL)