1.在QT创建工程的时候,一定要勾选如下OpenGl选项
2.先创建一个关于绘制OpenGl图像的类,在类中绘制一个三角形
#ifndef QOPENGLWIDGET_TEST_H
#define QOPENGLWIDGET_TEST_H
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
class OpenGLTest : public QOpenGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
public:
OpenGLTest(QWidget *parent);
~OpenGLTest();
void initializeGL();
void resizeGL(int width, int height);
void paintGL();
};
#endif // MY_QOPENGLWIDGET_H
#include "OpenGlTest.h"
OpenGLTest::OpenGLTest(QWidget *parent)
: QOpenGLWidget(parent)
{
// 设置OpenGL的版本信息
QSurfaceFormat format;
format.setRenderableType(QSurfaceFormat::OpenGL);
format.setProfile(QSurfaceFormat::CoreProfile);
//format.setVersion(3, 3); //放开可能显示不了图像了。
setFormat(format);
}
OpenGLTest::~OpenGLTest()
{
}
void OpenGLTest::initializeGL() {
initializeOpenGLFunctions();
//glShadeModel(GL_SMOOTH);//设置阴影平滑模式
glClearColor(0.98, 0.625, 0.12, 0.5);//改变窗口的背景颜色
glClearDepth(1.0);//设置深度缓存
glEnable(GL_DEPTH_TEST);//允许深度测试
glDepthFunc(GL_LEQUAL);//设置深度测试类型
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);//进行透视校正
}
void OpenGLTest::paintGL() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(0.0, 0.0, 1.0);
glBegin(GL_TRIANGLES);
glVertex3f(0.0, 1.0, 0.0);
glVertex3f(-1.0, -1.0, 0.0);
glVertex3f(1.0, -1.0, 0.0);
glEnd();
}
void OpenGLTest::resizeGL(int w, int h) {
glViewport(0, 0, w, h);
}
#include "test.h"
int main(int argc, char *argv[])
{
//QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
QApplication a(argc, argv);
test w;
w.show();
return a.exec();
}
#pragma once
#include "ui_test.h"
class test : public QMainWindow
{
Q_OBJECT
public:
test(QWidget *parent = Q_NULLPTR);
private:
Ui::test ui;
};
#include "test.h"
test::test(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
3.拖一个OpenGl的控件放置自己的界面上,右击控件,选择提升为上面创建的类,这里默认展示的头文件默认都为小写
4.运行结果
资源下载:https://download.csdn.net/download/weixin_41383353/14808677 点击这里