第三弹 OPenGL 渲染流程图解析

2019-05-15  本文已影响0人  Mr_Lxh

OpenGL 渲染流程图解析

OpenGL渲染架构图

如果,我们想要渲染一个三角形,具体的操作流程是什么呢?如下图:

渲染流程图.jpg

OpenGL 渲染流程分为两个端。一个叫客户端(Client)一个叫服务端(Server)。

客户端(Client):指的是CPU上存储的一些代码。比如说OpenGL API、C/C++ 的一些代码
服务端(Server): 服务端为GPU硬件部分,主要由Vertex Shader、Primitive Assembly、Fragment Shader组成。

渲染过程中,客户端会不断的将数据块和命令块组合在一起并送入缓冲区,然后缓冲区会发送到服务端执行

OpenGL 数据传递的三种方式

attribute(属性)

就是对⼀个顶点都要作出改变的数据元素。实际上,顶点位置本身就是一个属性。属性可以是浮点类型、整型、布尔类型等。

1、属性总是以思维向量的形式进行内部存储
2、属性包括纹理坐标、颜色值、光照计算的法线、纹理坐标等
3、属性会从客户端内存中复制存储在图形硬件中的一个缓冲区上,供顶点着色器使用。
4、属性不能直接作用于片元着色器。但可以通过顶点着色器进行图元装配后传递给片元着色器

Uniforms(统一值)

Uniform 是从CPU向GPU的着色器发送数据的一种方式

1、Uniform 是全局的。全局意味着uniform变量在每个着色器着色器程序对象中都是独一无二的。
2、uniform 在本质上像属性一样,可以是浮点型、整数或布尔型。不同的是,uniform 可以被着色器程序的任意着色器在任意阶段访问。
3、uniform会一直保存它们的数据,直到它们呗重置或更新。
4、uniform 变量在每个批次改变一次,而不是每个顶点改变一次

Texture Data(纹理数据)

任何大型浮点数据块(例消耗资源很大的函数的大型查询表)都可以通过纹理数据传递给着色器(纹理数据 将在以后文章详细讲解)

上一篇下一篇

猜你喜欢

热点阅读