opengl 使用soil读入bmp图像作为纹理

来源:互联网 发布:vr一体机 知乎 编辑:程序博客网 时间:2024/05/16 04:25

注意代码中要添加依赖库!!。soil还是非常好用的,下载地址网上有,注意版本,在不同的文件中有对应的vs的版本

// TextureTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <GL/glew.h>#include <GL/glut.h>#include <GL/SOIL.h>static GLuint texture;    //装载一个bmp图像使之成为纹理,其中貌似包含了 glTexImage2D这个函数的功能int LoadGLTextures(char *textureFilePath){    texture = SOIL_load_OGL_texture(textureFilePath,SOIL_LOAD_AUTO,SOIL_CREATE_NEW_ID,SOIL_FLAG_INVERT_Y);if(texture == 0)return -1;glBindTexture(GL_TEXTURE_2D,texture);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);return 0;}void init(){if ( !LoadGLTextures("texture2.bmp"))return;//glEnable( Gl_TEXTURE_2D);glShadeModel( GL_FLAT );glClearColor( 0.0f, 0.0f, 0.0f, 0.5f );glEnable ( GL_DEPTH_TEST );}void display( void ){glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );    glEnable( GL_TEXTURE_2D);//激活纹理glBindTexture(GL_TEXTURE_2D,texture);glBegin( GL_QUADS );     glTexCoord2f( 0.0, 0.0);  glVertex2f( -1.0, -1.0);   //纹理坐标的设置glTexCoord2f( 0.0, 1.0 );  glVertex2f( -1.0, 1.0 );glTexCoord2f( 1.0, 1.0 );  glVertex2f( 1.0, 1.0 );glTexCoord2f( 1.0, 0.0 ); glVertex2f ( 1.0, -1.0 );glEnd( );glFlush();glDisable( GL_TEXTURE_2D );//终止纹理}int _tmain(int argc, char* argv[]){glutInit( &argc, argv );glutInitDisplayMode( GLUT_SINGLE | GLUT_RGB );glutInitWindowSize ( 400, 400 );glutInitWindowPosition( 100, 100 );glutCreateWindow(" 简单纹理贴图实验  ");init();glutDisplayFunc ( display );glutMainLoop();return 0;}