簡體   English   中英

運行QT Creator時OpenGL出現問題

[英]Problems with OpenGL when running QT Creator

我正在嘗試使用QT Creator運行OpenGL的基本示例,為窗口提供顏色。 但是,在調用OpenGL指令時,我在編譯中遇到錯誤:glClearColor(1.0,1.0,0.0,1.0); * .pro文件是下一個:

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);
}

main.cpp:

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

我已經檢查了* .pro中我已經包含了opengl:QT + = core 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 Microsoft條款隱私和cookies開發者英語(美國)

嘗試將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);
    }
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM