使用OpenGL的glBindTexture()函数需要谨慎
发布时间:2021-12-13 16:07:47 所属栏目:教程 来源:互联网
导读:由于不了解OpenGL中的glBindTexture()函数的用法,多耽误了我几个小时的宝贵时间! glBindTexture()函数在渲染的时候调用,需要注意,一定不能放在glBegin()和glEnd()函数对中,否则函数的调用无效。下面就总结一下怎样在OpenGL中载入和显示纹理。 1、在初始
由于不了解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( ); } (编辑:我爱故事小小网_铜陵站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |