Qt中的OpenGL基础
参考链接:
https://www.bilibili.com/video/BV1UL411W71w/?spm_id_from=333.999.0.0
重点:状态机->设置状态+应用状态
之前与之后的状态被称为上下文
3.2以后,使用核心渲染模式,难以理解,但自定义效果更好,效率更高
opengl跨平台,采用其自带的数据类型更不容易报错
GPU渲染基本过程:顶点数据(obj数据)->顶点着色器(导入obj,获取顶点坐标,核心模式可自定义操控)->形状(图元)装配(坐标连线)->几何着色器(插值补充,核心模式可自定义操控)->光栅化(分割成像素)->片段着色器(像素赋值,核心模式可自定义操控)->测试与混合(多个像素片段融合)
一般流程:
- 创建id
- 根据id生成对象(记录员),用于记录状态
- 将创建的对象与需要记录状态的目标绑定
- 设置状态(此时记录员默默记录状态,不需要人为提醒)
- 让记录员休息,状态设置为0
每记录一个状态,都需要一个记录员
要在paintGL以外位置触发重新绘制(更新状态),需要update()(属于widget,可以直接使用)
要从paintGL,resizeGL,initializeGL以外的位置调用标准OpenGL API函数,需要首先调用makeCurrent()