使用OpenGL的glBindTexture()函数需要注意

使用OpenGL的glBindTexture()函数需要注意

由于不了解OpenGL中的glBindTexture()函数的用法,多耽误了我几个小时的宝贵时间!
glBindTexture()函数在渲染的时候调用,需要注意,一定不能放在glBegin()和glEnd()函数对中,否则函数的调用无效。下面就总结一下怎样在OpenGL中载入和显示纹理。
1、在初始化阶段,调用glGenTextures()函数产生纹理名(纹理索引),使用glBindTexture()函数绑定纹理,再用熟悉的图形加载库函数加载一个纹理,使用glTexImage2D()将数据载入至显存中;
2、在显示阶段,调用glBindTexture()函数将纹理绑定至显示上下文中,与顶点一起进入纹理贴图阶段。
下面是一段演示代码说明了怎样载入和显示纹理:
void InitGL( void )
{
	glEnable( GL_TEXTURE_2D );// 启用2D纹理
	glGenTextures( size, (GLuint*)&pTexture[0] );// size是大小,pTexture是纹理名指针


	……
	glBindTexture( GL_TEXTURE_2D, pTexture[0] );
	pData = LoadImage( fileName );// 载入文件,保存至pData指针中
	glTexImage2D( GL_TEXTURE_2D,// 目标
                          0,// 级别
                          internalFormat,// 纹理内部格式
                          width,// 纹理的宽(最好2的次方)
                          height,// 纹理的高(最好2的次方)
                          0,// 纹理的深度(最好2的次方)
                          0x80E1,// 纹理单元格式(GL_BGRA=0x80E1)
                          textureType,// 像素的数据类型
                          pData );// 数据指针
	……
}


void RenderGL( void )
{
	glBindTexture( GL_TEXTURE_2D, pTexture[0] );
	glBegin( primitive );
	glTexCoord( u, v );
	glVertex3f( x, y, z );
	……
	glEnd( );
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值