Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 运行QT Creator时OpenGL出现问题_C++_Qt_Opengl_Opengl Es - Fatal编程技术网

C++ 运行QT Creator时OpenGL出现问题

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

我正在尝试运行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\
        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的测试代码