Qt中使用OpenGL的纹理贴图
2009-11-08 19:41
501 查看
在Qt中封装了OpenGL的部分功能,以便使用OpenGL变得更加容易。Qt中为OpenGL提供支持的类包括有QGLWidget, QGLContext, QGLFormat, QGLColorMap, 具体功能见SDK。由于遇到在场景物体上显示纹理贴图的问题,这里简单的说一下。
在Qt中使用纹理贴图和直接OpenGL中显示纹理略有不同(参加Nehe的纹理教程),OpenGL中提供一个叫作AUX_RGBImageRec的结构体来存储纹理纹理数据,调用
auxDIBImageLoad()函数来装载纹理图片,常见的调用形式如:
AUX_RGBImageRec* image =
auxDIBImageLoad("D:/**.bmp");
然后生成纹理名(
glGenTextures()
)、绑定纹理(
glBindTexture
)、生成真正的纹理
(glTexImage2D())。
在Qt中,则是利用QImage来装载纹理贴图,然后用QGLWidget的静态函数
convertToGLFormat()将QImage格式转换为OpenGL支持的数据格式,如下:
QImage tex, buf;
if(buf.load(D:/**.bmp)){ //装载贴图
tex = QGLWidget::convertToGLFormat(buf); //转换为OpenGL支持的格式
glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1.width(), tex1.height(), 0,
GL_RGBA, GL_UNSIGNED_BYTE, tex1.bits() ); //创建纹理
}
其他生成纹理名绑定等仍类似,这里要注意的是,经过convertToGLFormat()转换后的QImage(虽然返回的仍然是QImage)已经不能当作正常的QImage使用了,它仍然能够使用的成员函数只剩下QImage:width(),QImage::height()和QImage::bit(),这也正是glTexImage2D()需需要的几个参数。
在Qt中使用纹理贴图和直接OpenGL中显示纹理略有不同(参加Nehe的纹理教程),OpenGL中提供一个叫作AUX_RGBImageRec的结构体来存储纹理纹理数据,调用
auxDIBImageLoad()函数来装载纹理图片,常见的调用形式如:
AUX_RGBImageRec* image =
auxDIBImageLoad("D:/**.bmp");
然后生成纹理名(
glGenTextures()
)、绑定纹理(
glBindTexture
)、生成真正的纹理
(glTexImage2D())。
在Qt中,则是利用QImage来装载纹理贴图,然后用QGLWidget的静态函数
convertToGLFormat()将QImage格式转换为OpenGL支持的数据格式,如下:
QImage tex, buf;
if(buf.load(D:/**.bmp)){ //装载贴图
tex = QGLWidget::convertToGLFormat(buf); //转换为OpenGL支持的格式
glTexImage2D( GL_TEXTURE_2D, 0, 3, tex1.width(), tex1.height(), 0,
GL_RGBA, GL_UNSIGNED_BYTE, tex1.bits() ); //创建纹理
}
其他生成纹理名绑定等仍类似,这里要注意的是,经过convertToGLFormat()转换后的QImage(虽然返回的仍然是QImage)已经不能当作正常的QImage使用了,它仍然能够使用的成员函数只剩下QImage:width(),QImage::height()和QImage::bit(),这也正是glTexImage2D()需需要的几个参数。
相关文章推荐
- 纹理窗口Qt+OpenGL之纹理贴图
- qt5_qml_Opengl_shader 第二弹----------------------纹理贴图(RGB)
- qt5.6.0 opengl —— 纹理贴图
- Qt OpenGL 使用纹理
- Qt+OpenGL之纹理贴图
- Qt下的OpenGL 编程纹理和贴图
- (转)使用OpenGL显示图像(七)Android OpenGLES2.0——纹理贴图之显示图片
- OpenGL学习笔记(十三):将纹理贴图应用到四边形上,对VAO/VBO/EBO/纹理/着色器的使用方式进行总结
- OpenGL+Qt界面(四) 纹理贴图
- qt5_qml_Opengl_shader 第三弹-----------------------纹理贴图(YUV)
- IOS 中openGL使用教程3(openGL ES 入门篇 | 纹理贴图(texture)使用)
- qt5_qml_Opengl_shader 第四弹----------------------纹理贴图(YUV视频循环播放)
- Qt openGL 使用QImage 生成二维纹理
- IOS 中openGL使用教程3(openGL ES 入门篇 | 纹理贴图(texture)使用)
- Qt-OpenGL中的多纹理贴图
- Qt OpenGL----纹理贴图
- 使用glfw库将OpenCV读取到的图片作为OpenGL的背景纹理贴图
- Qt5.6.0+OpenGL 纹理贴图首战告捷
- OpenGL_ES|WinCE纹理贴图的方式绘制字符串
- OpenGL——纹理贴图