我正在尝试使用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 #includeclass 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" #includeint 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.
#includeclass 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); } };