首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QT5.6中的Opengl

QT5.6中的Opengl
EN

Stack Overflow用户
提问于 2016-04-06 22:39:57
回答 1查看 796关注 0票数 1

我过去经常使用QT5.1.1,而OpenGL过去工作得很好。

现在,我已经安装了QT5.6,而且OpenGL应用程序似乎并不像5.1.1那样简单。

GL函数(甚至包括带有#include <QOpenGLFunctions>的函数)返回“未定义的引用”。也许是因为它是一个非常新的版本,我找不到任何东西来帮助我解决这个问题。

主要问题是:如何继续使用QT5.6版本的OpenGL?任何GL功能都能工作。

我在一些Qt手册示例中看到,initializeOpenGLFunctions()使其工作,但我的代码不承认这个语句(我尝试了#包含很多东西)。

代码是最基本的:

格洛维吉

代码语言:javascript
复制
#ifndef GLWIDGET_H
#define GLWIDGET_H

#include <QGLWidget>

class GLWidget : public QGLWidget
{
    Q_OBJECT
public:
    explicit GLWidget(QWidget *parent = 0);

    void initializeGL();
    void paintGL();
    void resizeGL(int w, int h);
};

#endif // GLWIDGET_H

主窗h:

代码语言:javascript
复制
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

glwidget.cpp:

代码语言:javascript
复制
#include "glwidget.h"

#include <QWidget>
#include <QOpenGLFunctions>



GLWidget::GLWidget(QWidget *parent) :
    QGLWidget(parent)
{

}

void GLWidget::initializeGL()
{

    glClearColor(1,1,0,1);

}

void GLWidget::paintGL()
{

}

void GLWidget::resizeGL(int w, int h)
{

}

main.cpp:

代码语言:javascript
复制
#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.cpp:

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
}

test.pro:

代码语言:javascript
复制
QT       += core gui opengl

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Test
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    glwidget.cpp

HEADERS  += mainwindow.h \
    glwidget.h

FORMS    += mainwindow.ui
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-06 23:18:33

我假设您的“未定义引用错误”指向您试图使用的glColor()函数。

为了能够使用QOpenGLFunctions (如glColor() ),您必须使您的GLWidget也从QOpenGLFunctions继承;例如:

代码语言:javascript
复制
#include <QOpenGLFunctions>

class GLWidget: public QGLWidget, protected QOpenGLFunctions
{ // ...
};

有关更多详细信息,请参阅这个例子

Note:是新代码赞成QOpenGLWidget

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36463561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档