[英]Opengl in Qt 5.6
我曾經使用過Qt 5.1.1,而OpenGL則可以正常工作。
現在,我已經安裝了Qt 5.6,看來像5.1.1那樣的OpenGL應用程序並不簡單。
GL函數(甚至將其包含在#include <QOpenGLFunctions>
返回“未定義的引用”。也許因為它是一個非常新的版本,所以我沒有找到任何可以幫助我的東西)。
主要問題是:如何在Qt 5.6版本中使用OpenGL? 任何GL功能都可以使用。
我在一些《 Qt手冊》示例中看到, initializeOpenGLFunctions()
使其可以工作,但是我的代碼無法識別該語句(我試圖#include很多東西)。
該代碼是最基本的:
glwidget.h:
#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
mainwindow.h:
#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:
#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中:
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp:
#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:
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
我假設您的“未定義的引用錯誤”指向您要使用的glColor()
函數。
為了能夠使用諸如glColor()
QOpenGLFunctions
,必須使GLWidget
也從QOpenGLFunctions
繼承。 例如:
#include <QOpenGLFunctions>
class GLWidget: public QGLWidget, protected QOpenGLFunctions
{ // ...
};
有關更多詳細信息,請參見此示例 。
注意 : 強烈建議不要在新代碼中使用QGLWidget
,而建議使用 QOpenGLWidget
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.