OpenGL的学习之路

目录

Qt如何创建OpenGL的渲染窗口?

Qt如何实现OpenGL函数绑定?

什么是图形管线?

1、程序阶段(应用阶段)

2、几何阶段

3、光栅化阶段

4、像素处理阶段

什么是GLSL?

1、基本数据类型

2、变量和限定符

3、结构体和数组

4、控制流和函数

5、内置变量和函数

6、精度限定符

7、版本和扩展


Qt如何创建OpenGL的渲染窗口?

类比GLFW库,Qt提供了OpenGL的渲染窗口类QOpenGLWidget:

1、重写initializeGL()和resizeGL()函数来设置OpenGL状态并提供透视图转换。

2、重写paintGL()来绘制3D场景,只调用OpenGL函数。

3、还可以使用QPainter将2D图形绘制到QOpenGLWidget子类上。在paintGL()中,不是发出OpenGL命令,而是构建一个用于部件的QPainter对象(注意QPainter没调用OpenGL渲染)。

Qt如何实现OpenGL函数绑定?

类比GLAD库,Qt不直接调用OpenGL函数,而是通过QOpenGLFunctions这一实例来进行函数调用,这种调用方法主要有以下两种:

1、直接从OpenGLContext::functions()中获取

 QOpenGLFunctions *f = QOpenGLContext::currentContext()->functions();
 f->glClearColor(1.0f, 1.0f, 1.0f, 1.0f);

2、继承QOpenGLFunctions

 class MyGLWidget : public QOpenGLWidget, protected QOpenGLFunctions
 {
     ...
     void initializeGL() override
     {
         initializeOpenGLFunctions();
         glClearColor(...);
         ...
     }
     ...
 };

什么是图形管线?

图形管线,也称为渲染管线,是将渲染数据(如模型、材质、贴图等)进行整合、运算并最终显示到屏幕的流程。这一流程可以视为一个流水线,其中每个阶段都依赖上一个阶段的计算结果,逐步将原始数据转化为最终的图像。图形管线大致可以分为以下几个主要阶段:

1、程序阶段(应用阶段)

概述:此阶段主要由CPU负责完成,处理待渲染的数据,包括加载资源、物理计算、计算相机、光源、场景模型以及人物等对象的位置与动画帧等。
任务:剔除冗余的渲染数据(可能使用动态加载、遮挡剔除及可见性剔除等技术),并将这些数据整理成GPU可理解的形式(如位置、法线、UV坐标、切线及颜色值等),提交给GPU进行下一阶段的计算。

2、几何阶段

顶点处理:包括顶点着色器(Vertex Shader)的执行,负责将顶点的位置从局部空间转换到齐次剪切空间(Homogeneous Clipping Space),并可能操作顶点相关的属性(如颜色、法线、纹理坐标等)。顶点着色器还进行逐顶点的光照计算等操作。
变换:包括模型变换(Model Transformation)、视图变换(View Transformation)和投影变换(Projection Transformationÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值