当前位置: 代码迷 >> QT开发 >> qt + opengl 无法显示?解决思路
  详细解决方案

qt + opengl 无法显示?解决思路

热度:1012   发布时间:2016-04-25 03:06:30.0
qt + opengl 无法显示?
我用QGLWidget来运行opengl代码 但是只能显示出背景颜色,其他任何都显示不出来

代码:

#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>

class GLWidget : public QGLWidget
{
    Q_OBJECT
public:
    explicit GLWidget(QWidget *parent = 0);

    virtual void initializeGL();
    virtual void resizeGL(int w, int h);
    virtual void paintGL();
};

#endif // GLWIDGET_H



#include "glwidget.h"
#include <gl/glut.h>


GLWidget::GLWidget(QWidget *parent) :
    QGLWidget(parent)
{}

void GLWidget::initializeGL()
{
    qglClearColor(Qt::gray);
    glShadeModel(GL_SMOOTH);
    glClearColor(0.6, 0.2, 0.2, 1);
}

void GLWidget::resizeGL(int w, int h)
{
    glViewport(0, 0, w, h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    GLfloat x = GLfloat(w) / h;
    glFrustum(-x, +x, -1.0, +1.0, 4.0, 20.0);
    glMatrixMode(GL_MODELVIEW);
}

void GLWidget::paintGL()
{
    //qglClearColor(QColor(0,0,255,128));
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_TRIANGLES);
            glVertex3f(0.0,1.0,0.0);
            glVertex3f(-1.0,-1.0,0.0);
            glVertex3f(1.0,-1.0,0.0);
    glEnd();
}



#include <QApplication>
#include <QtOpenGL/QtOpenGL>
#include "glwidget.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    GLWidget *gl = new GLWidget();
    gl->updateGL();
    gl->show();
    
    return a.exec();
}




void GLWidget::initializeGL()
{
    qglClearColor(Qt::gray);
    glShadeModel(GL_SMOOTH);
    glClearColor(0.6, 0.2, 0.2, 1);
}
这个函数里的最后一行代码执行了  因为窗口颜色是这个颜色
但并没有显示出我要画的三角形-------即使我在main函数里调用了updateGL()函数,也不行

求高人指点  困惑好几天了.........

PS:
我qt的版本是5.0.2
------解决思路----------------------
应该不会啊,可以留邮箱我发给你我的代码,其实很简单的