/*装载纹理*/
void GLWidget::loadGLTextures()
{
QImage tex, buf;
if(!buf.load(":/images/2.bmp"))//这个时候因为debug没有在外面,所以图片文件夹就是本目录了
// if(!buf.load("../opengl_qt_nehe_07/crate.bmp"))
{
qWarning("Cannot open the image...");
QImage dummy(128, 128, QImage::Format_RGB32);//当没找到所需打开的图片时,创建一副128*128大小,深度为32位的位图
dummy.fill(Qt::green);
buf = dummy;
}
tex = convertToGLFormat(buf);//将Qt图片的格式buf转换成opengl的图片格式tex
glGenTextures(1, &texture[0]);//开辟3个纹理内存,索引指向texture[0]
/*建立第一个纹理*/
glBindTexture(GL_TEXTURE_2D, texture[0]);//将创建的纹理内存指向的内容绑定到纹理对象GL_TEXTURE_2D上,经过这句代码后,以后对
//GL_TEXTURE_2D的操作的任何操作都同时对应与它所绑定的纹理对象
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);//当所显示的纹理比加载进来的纹理小时,采用GL_NEAREST的方法来处理
//GL_NEAREST方式速度非常快,因为它不是真正的滤波,所以占用内存非常
// 小,速度就快了
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);//当所显示的纹理比加载进来的纹理大时,采用GL_NEAREST的方法来处理
}
void GLWidget::timerEvent(QTimerEvent *)
{
updateGL();
}