Jua*_*rez 4 c++ opengl qt opengl-es
我正在尝试使用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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
glwidget.cpp是下一个:
#include "glwidget.h"
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
}
void GLWidget::initializeGL(){
glClearColor(1.0,1.0,0.0,1.0);
}
Run Code Online (Sandbox Code Playgroud)
main.cpp:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
我已经检查了*.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);
Run Code Online (Sandbox Code Playgroud)
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);
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5091 次 |
| 最近记录: |