OpenGL渲染架构
渲染架构图

主要分为两大模块
- Client:是指常见的ios代码和OpenGL API方法。这部分是在CPU中运行的。
- Server:OpenGL底层的渲染等处理,是运行在GPU中的。
渲染流程
- 客户端中通过ios代码调用OpenGL API的方法,将图形渲染的相关数据通过通道传递到服务器中顶点着色器和片元着色器,并交由GPU处理。
- 服务器通过与客户端的通道接收传递的数据,并交由相应着色器进行渲染处理,并将最终结果渲染到屏幕上。
数据传递的三种方式
从图中可以看出客户端和服务端传递数据的通道有三种
- Attributes
- Uniform
- Texture Data
通道名称 | 参数类型 | 可传入着色器 |
---|---|---|
Attributes | 经常发生变动的数据:纹理坐标、光照法线、顶点坐标、颜色数据 | 顶点着色器 |
Uniform | 不经常发生变动的数据 | 顶点着色器,片元着色器 |
Texture Data | 纹理 | 顶点着色器,片元着色器 |
-
Attributes 通道只能将数据直接传递到顶点着色器,不能将数据传递到片元着色器。但是可以通过顶点着色器间接传递给片元着色器
-
Uniform 传递是比较统一的批次数据,不经常发生变动的数据。
-
Texture Data 同Uniform 一样,可以将数据传递到顶点着色器和片元着色器。由于顶点着色器主要处理顶点数据的,我们将纹理数据传递过去并没有多大的意义,而纹理的处理逻辑主要是在片元着色器中进行的。
网友评论