找了网上的博客,照着做了,发现其中有不少坑,特此记录,与君共勉。
传送门
1 在新建qt widget application 之后,开始进入正式内容
2 新建c++类,类名为OpenGLWidget,基类为QOpenGLWidget,勾选Include QWidget
3 编辑OpenGLWidget类,代码如下
openglwidget.h
#ifndef OPENGLWIDGET_H
#define OPENGLWIDGET_H
#include <QWidget>
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
#include <QOpenGLShaderProgram>
class OpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
public:
OpenGLWidget();
protected:
void initializeGL();
void paintGL();
void resizeGL(int w, int h);
void initVbo();
private:
GLint matrixLocation;
GLint vertexLocation;
GLint colorLocation;
GLint programId;
int vVerticesLen;
int triIndexLen;
int colorsLen;
GLuint verVbo;
GLuint indexVbo;
GLuint colorVbo;
QOpenGLShaderProgram* program;
GLfloat* vertex;
GLuint* triIndexs;
GLfloat* colors;
//GL_FLOAT_MAT4 projection;
QMatrix4x4 projection;
};
#endif // OPENGLWIDGET_H
openglwidget.cpp
#include "openglwidget.h"
OpenGLWidget::OpenGLWidget()
{
}
void OpenGLWidget::initializeGL()
{