#ifndef OPENGLWIDGET_H
#define OPENGLWIDGET_H
#include <QOpenGLWidget>
#include <QOpenGLFunctions_3_3_Compatibility>
class OpenGLWidget : public QOpenGLWidget
{
public:
explicit OpenGLWidget(QWidget *parent = 0);
void initializeGL();
void paintGL();
void resizeGL(int w, int h);
unsigned int VBO;
};
void OpenGLWidget::initializeGL()
{
}
void OpenGLWidget::resizeGL(int w, int h)
{
//当窗口大小改变时,调整界面坐标显示高度和宽度
glViewport(0, 0, w, h);
}
void OpenGLWidget::paintGL()
{
//清除之前图形并将背景设置为黑色
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.1f, 0.2f, 0.1f, 1.0f);
float vertices[] = {
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
glGenBuffers(1, &VBO);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
#endif // OPENGLWIDGET_H
已经引用了头文件为什么还是未定义?
(1).pro文件中添加 QT += opengl
(2)包含头文件#include <QGLFunctions>
(3)OpenGLWidget 继承QGLFunctions类:
class OpenGLWidget : public QOpenGLWidget, protected QGLFunctions
既然用Qt,那么就用Qt提供QOpenGLFunctions里函数接口替换相应的OpenGL函数,基本上都是一一对应的。
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!