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();