使用Qt編寫opengl學習路線
阿新 • • 發佈:2019-02-19
之前想在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類: