QT+OpenGL读取显示图片,OpenGL在QT里的刷新问题(好几篇)
GLuint readImage(char *filename)
{
GLuint tex_id;
GLint alignment;
QImage tex, buf;
buf.load(filename);
tex = QGLWidget::convertToGLFormat( buf );
glBindTexture( GL_TEXTURE_2D, tex_id );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glGetIntegerv (GL_UNPACK_ALIGNMENT, &alignment);
glPixelStorei (GL_UNPACK_ALIGNMENT, 1);
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, tex.width(), tex.height(), 0,
GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() );
glPixelStorei (GL_UNPACK_ALIGNMENT, alignment);
return tex_id;
}
显示PNG透明,不显示BMP白边等方法参考前面两篇。
在QT界面的显示参考BMP那篇
http://stackoverflow.com/questions/5335218/using-qimage-with-opengl
2012/5/21
还是要多看书,前面一大堆读取绑定纹理的方式
现在就只要下面三句就行了
//bindTexture() 绑定纹理
GLuint texture = bindTexture(QPixmap(QString(FileNameImage)), GL_TEXTURE_2D);
QRectF rect(0.0f,0.0f,0.2f,0.2f);
drawTexture(rect,texture,GL_TEXTURE_2D);
效果没有前面的方式好,正在研究。
图片的显示,需要旋转一下glRotatef();
使用glBegin()glEnd()画的图形开始会显示,给图片加上拖动效果后,一移动图片,其他图形就会消失,不解;
http://blog.csdn.net/zmy3376365/article/details/7572303
参考http://www.cnblogs.com/dabaopku/archive/2011/11/14/2247721.html
在QGraphicsView的事件中,不论使用 update,repaint,抑或updateScence,resetCacheContent, 均不可以刷新界面
要调用 viewport 的update函数!!!
给GraphicsView设置这么一个属性setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
例如:ui->graphicsView->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
在需要的地方后面加一句update例如在GraphicsScene(继承自QGraphicsScene)中加update();
或着是GraphicsView(继承自QGraphicsView): this->viewport()->update();
具体情况,具体分析
http://blog.csdn.net/zmy3376365/article/details/7572698