OpenGL,Qt实现:1入门篇(已更完)_哔哩哔哩_bilibili
OpenGL3.3以上是现代模式(可编程管线):
状态机
状态设置函数(State-changing Function)
状态应用函数 (State-using Function)
OpenGL的状态通常被称为上下文(Context)。
OpenGL3.2以下是传统模式(固定管线):立即渲染模式(Immediate mode)
GLFW:创建支持OpenGL的窗口(定义上下文)(处理用户输入)。
GLAD:使代码可以用于不同的OpenGL驱动。
通常需要通过函数指针调用显卡的函数。
OpenGL核心模式(Core-profile):
可编程模式,更灵活,更高效
灰色不可编程
(以前每个流程都是写死的)
其中:几何着色器是有默认的部分的(用的不多)
顶点着色器和片段着色器(我们必须写代码)
glClearColor(0.2f,0.3f,0.3f,1.0f);//set
glClear(GL_COLOR_BUFFER_BIT);//use
最简单的应用:
cpp
#ifndef OPENGLWIDGET_H
#define OPENGLWIDGET_H
#include <QOpenGLWidget>
#include <QOpenGLFunctions_3_3_Core>
class OpenGLWidget : public QOpenGLWidget,QOpenGLFunctions_3_3_Core
{
Q_OBJECT
public:
explicit OpenGLWidget(QWidget *parent = nullptr);
protected:
virtual void initializeGL();
virtual void resizeGL(int w, int h);
virtual void paintGL();
signals:
public slots:
};
#endif // OPENGLWIDGET_H
cpp
#include "openglwidget.h"
OpenGLWidget::OpenGLWidget(QWidget *parent) : QOpenGLWidget(parent)
{
}
void OpenGLWidget::initializeGL()
{
initializeOpenGLFunctions();
}
void OpenGLWidget::resizeGL(int w, int h)
{
}
void OpenGLWidget::paintGL()
{
glClearColor(0.2f,0.3f,0.3f,1.0f);
glClear(GL_COLOR_BUFFER_BIT);
}