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

注意代码中要添加依赖库!!。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;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值