1. 程式人生 > >使用Qt編寫opengl學習路線

使用Qt編寫opengl學習路線

之前想在qt上編譯opengl,無從下手,最近看的到網上很多的例子。

那不如就從這些例子下手,慢慢做例項。

1.實現視窗

效果:


第一步新建,Qt Widgets Application工程,選擇一個Widget控制元件拖入視窗,選擇在視窗中進行柵格佈局。

簡單說就是在ui介面,拖入一個Widget。

2.新建類,右鍵新增新項,新增openglwindow類。base class為QOpenGLWidget

openglwindow.h寫為:

#ifndef OPENGLWINDOW_H
#define OPENGLWINDOW_H

#include <QOpenGLWidget>
#include <QOpenGLFunctions_3_3_Core>
class openglwindow : public QOpenGLWidget,
                    protected QOpenGLFunctions_3_3_Core
{
    Q_OBJECT
public:
    openglwindow(QWidget *parent = 0);
    ~openglwindow();


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

#endif // OPENGLWINDOW_H

openglwindow.cpp為:
#include "openglwindow.h"

openglwindow::openglwindow(QWidget *parent)
    :QOpenGLWidget(parent)
{
    QSurfaceFormat format;
    format.setRenderableType(QSurfaceFormat::OpenGL);
    format.setProfile(QSurfaceFormat::CoreProfile);
    format.setVersion(3,3);
    setFormat(format);
}

openglwindow::~openglwindow()
{}

void openglwindow::initializeGL()
{
    initializeOpenGLFunctions();
    glClearColor(0.0f,0.0f,0.0f,1.0f);
}
void openglwindow::paintGL()
{
    glClear(GL_COLOR_BUFFER_BIT);
}

void openglwindow::resizeGL(int w,int h)
{
    Q_UNUSED(w);
     Q_UNUSED(h);

}

3.把widget那個空間提升為openglwindow類: