C++ 运行QT Creator时OpenGL出现问题
我正在尝试运行OpenGL的基本示例,使用QT Creator为窗口添加颜色。但是,调用OpenGL指令时,我在编译过程中遇到错误: glClearColor(1.0,1.0,0.0,1.0); *.pro文件是下一个:C++ 运行QT Creator时OpenGL出现问题,c++,qt,opengl,opengl-es,C++,Qt,Opengl,Opengl Es,我正在尝试运行OpenGL的基本示例,使用QT Creator为窗口添加颜色。但是,调用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\ main
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
#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
#include "glwidget.h"
GLWidget::GLWidget(QWidget *parent) :
QGLWidget(parent)
{
}
void GLWidget::initializeGL(){
glClearColor(1.0,1.0,0.0,1.0);
}
glwidget.h是下一个:
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
#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
#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();
}
#包括“mainwindow.h”
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
主窗口w;
w、 show();
返回a.exec();
}
我已经检查了*.pro中是否包含了opengl:
QT+=核心gui opengl
此外,我还删除了QT Creator创建的“YourProjectName构建桌面”文件夹,并再次构建,但未成功
错误是:
C:\test2\glwidget.cpp:9:错误:未定义对`\u imp的引用__glClearColor@16'
其中第9行为glClearColor(1.0,1.0,0.0,1.0)
我少了哪一步
提前感谢您的帮助
干杯
©2016 Microsoft Terms Privacy&cookies Developers English(美国)尝试将
LIBS+=-lOpengl32
添加到.pro文件中
如果你用的是Qt5,你最好走这条路
QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
f->glClearColor(1.0f, 1.0f, 0.0f, 1.0f);
编辑:
刚刚测试过这个,它能工作。但需要qt5。
遗留函数似乎是在Qt5中定义的,所以我省略了QopenglFunction
#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);
}
};
#包括
类GLWidget:公共QOpenGLWidget
{
公众:
GLWidget(QWidget*父项):
QOpenGLWidget(家长)
{
}
受保护的:
void initializeGL()
{
glClearColor(1.0f、1.0f、0.0f、1.0f);
}
void paintGL()
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
gl3f(1,0,0);
glBegin(GL_三角形);
glVertex3f(-0.5,-0.5,0);
glVertex3f(0.5,-0.5,0);
glVertex3f(0.0,0.5,0);
格伦德();
}
void resizeGL(int w,int h)
{
glViewport(0,0,w,h);
}
};
您得到了哪个错误?我得到了C:\test2\glwidget.cpp:9:error:undefined引用到`\u imp__glClearColor@16'其中第9行为glClearColor(1.0,1.0,0.0,1.0);谢谢,这对initializeGL很有效。在这个函数之后,我有了paintGL函数(我没有发布),它包括:glClear(GL\u COLOR\u BUFFER\u位);gl3f(1,0,0);glBegin(GL_三角形);glVertex3f(-0.5,-0.5,0);glVertex3f(0.5,-0.5,0);glVertex3f(0.0,0.5,0);glEnd()我已经应用了相同的更改,但不起作用。@ArturoReyesLopez我添加了一些需要Qt5的测试代码