2016-01-10 40 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