2016-01-10 42 views
3

我正在尝试使用QT Creator运行OpenGL的基本示例,为窗口添加颜色。但是,在调用OpenGL指令时出现编译错误: glClearColor(1.0,1.0,0.0,1.0); 的* .pro文件是下一个:运行QT Creator时OpenGL的问题

QT  += core gui opengl 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
TARGET = test2 
TEMPLATE = app 
SOURCES += main.cpp\ 
     mainwindow.cpp \ 
    glwidget.cpp 
HEADERS += mainwindow.h \ 
    glwidget.h 
FORMS += mainwindow.ui 

的glwidget.h是下一个:

#ifndef GLWIDGET_H 
#define GLWIDGET_H 
#include <QGLWidget> 
class GLWidget : public QGLWidget 
{ 
    Q_OBJECT 
public: 
    explicit GLWidget(QWidget *parent = 0); 
    void initializeGL();  
}; 
#endif // GLWIDGET_H 

的glwidget.cpp是下一个:

#include "glwidget.h" 
GLWidget::GLWidget(QWidget *parent) : 
    QGLWidget(parent) 
{ 
} 
void GLWidget::initializeGL(){ 
    glClearColor(1.0,1.0,0.0,1.0); 
} 

为主。 cpp:

#include "mainwindow.h" 
#include <QApplication> 
int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 
    MainWindow w; 
    w.show(); 
    return a.exec(); 
} 

我hav e检查在* .pro中是否包含了opengl: QT + =核心gui opengl 另外,我已经删除了由QT Creator创建的“YourProjectName-build-desktop”文件夹,并且没有成功再次构建。

的错误是: C:\ TEST2 \ glwidget.cpp:9:错误:未定义参考`_imp__glClearColor @ 16' 其中线9是glClearColor(1.0,1.0,0.0,1.0);

我失踪了哪一步?

预先感谢您的帮助

干杯 ©2016 Sina.com免责声明&饼干开发商英语(美国)

+0

你会得到哪个错误? – BDL

+0

我得到C:\ test2 \ glwidget.cpp:9:错误:undefined指向'_imp__glClearColor @ 16',其中第9行是glClearColor(1.0,1.0,0.0,1.0); – Xalapa

回答

4

尝试加入LIBS += -lOpengl32到.pro文件

,如果你`重新使用qt 5你不妨走这条路线

QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions(); 
f->glClearColor(1.0f, 1.0f, 0.0f, 1.0f); 

http://doc.qt.io/qt-5/qopenglwidget.html http://doc.qt.io/qt-5/qopenglcontext.html

编辑:

只是测试这一个它的工作原理。但需要qt5。 传统函数似乎是在qt 5中定义的,所以我忽略了QOpenGLFunctions。

#include <QOpenGLWidget> 

class GLWidget : public QOpenGLWidget 
{ 
public: 
    GLWidget(QWidget* parent) : 
     QOpenGLWidget(parent) 
    { 

    } 

protected: 
    void initializeGL() 
    { 
     glClearColor(1.0f, 1.0f, 0.0f, 1.0f); 
    } 

    void paintGL() 
    { 
     glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

     glColor3f(1,0,0); 
     glBegin(GL_TRIANGLES); 
     glVertex3f(-0.5, -0.5, 0); 
     glVertex3f(0.5, -0.5, 0); 
     glVertex3f(0.0, 0.5, 0); 
     glEnd(); 
    } 

    void resizeGL(int w, int h) 
    { 
     glViewport(0, 0, w, h); 
    } 
}; 
+0

谢谢你,它为initializeGL工作。在这个函数后,我有paintGL函数(我没有发布),其中包括: glClear(GL_COLOR_BUFFER_BIT); glColor3f(1,0,0); glBegin(GL_TRIANGLES); glVertex3f(-0.5,-0.5,0); glVertex3f(0.5,-0.5,0); glVertex3f(0.0,0.5,0); glEnd() 我已应用相同的更改,但没有奏效。 – Xalapa

+0

@ArturoReyesLopez我添加了一些需要qt 5的测试代码 – DevGuy