zoukankan      html  css  js  c++  java
  • 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://www.qtforum.org/article/33724/creating-an-opengl-texture-from-qimage-with-a-transparent-background.html

    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

  • 相关阅读:
    三阶魔方公式
    XML解析GData、XMLParser
    xib_cell布局适配高度
    SizeClass
    Storyboard界面传值
    Masonry(第三方库)的使—代码实现屏幕适配
    UITableView
    AFNetworking网上加载数据及JSON解析
    UICollectionView
    OC面向对象-多态
  • 原文地址:https://www.cnblogs.com/findumars/p/6283455.html
Copyright © 2011-2022 走看看