您的位置:首页 > 编程语言 > Qt开发

Qt OpenGL 使用纹理

2015-04-09 15:05 387 查看

Qt OpenGL 使用纹理

一、加载纹理

Qt使用QImage类来加载计算上面的纹理文件:
头文件:#include<QImage>

/*
*
1.Qt加载本地纹理;
*
2.转换为OpenGL格式纹理;
*/

QImage texture, buffer;
buffer.load( "./data/tex.png" );
texture = QGLWidget::convertToGLFormat( buf );//转换为OpenGL支持的格式

二、OpenGL设置纹理

/*
*	1.创建纹理数量;

*	2.绑定纹理到目标纹理上;

*	3.创建纹理;

*	4.设置纹理过滤,放大缩小;

*/

glGenTextures( 1, &texture[0] );//创建纹理数量 :一个  。(.h) GLuint texture[1];

glBindTexture( GL_TEXTURE_2D, texture[0] );//将纹理绑定到目标纹理上
glTexImage2D( GL_TEXTURE_2D, 0, 3, tex.width(), tex.height(), 0,
GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );//滤波
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );

三、OpenGL初始化环境中启用纹理

glEnable( GL_TEXTURE_2D );

四、绘制纹理到图片上

glBegin( GL_QUADS );
glTexCoord2f( 0.0, 0.0 ); glVertex3f( -1.0, -1.0,  1.0 );
glTexCoord2f( 1.0, 0.0 ); glVertex3f(  1.0, -1.0,  1.0 );
glTexCoord2f( 1.0, 1.0 ); glVertex3f(  1.0,  1.0,  1.0 );
glTexCoord2f( 0.0, 1.0 ); glVertex3f( -1.0,  1.0,  1.0 );
glEnd();



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: