主要分为两个模块
- Client:是指常见的iOS代码和OpenGL API方法,这部分是在CPU中运行
- Server:是指OpenGL底层的渲染等处理,是运行在GPU中的
架构分析
- 客户端(通过代码调用OpenGL API)只能控制顶点着色器和片元着色器。
- 客户端中通过代码方式去调用OpenGL中的API方法,将图形渲染的相关数据通过通道传递给服务器(OpenGL底层方法)中的顶点着色器和片元着色器,并交给GPU处理
- 服务器通过与客户端的通道接受传递的数据,并交由相应着色器进行渲染处理,并将最终效果渲染到屏幕上。
数据传递
- Attributes
- Uniform
- Texture Data
通道名称 | 参数类型 | 可传入的着色器 |
---|---|---|
Attributes | 经常发生变动的数据 :纹理坐标 、光照法线、顶点坐标 、颜色数据 | 顶点着色器 |
Uniform | 不经常发生变动的数据 | 顶点着色器、片元着色器 |
Texture Data | 纹理 | 顶点着色器(纹理很少传到顶点着色器上)、片元着色器 |
Attributes
- Attributes通道
只能将数据直接传递到顶点着色器,不能直接传递到片元着色器,但是可以通过顶点着色器间接传递给片元着色器。
- 通过Attributes传递的通常是
经常发生变化的数据
,例如颜色、顶点等。- Attribute主要传递这些参数:
颜色数据、顶点坐标、纹理坐标、光照法线等。
Uniform
1.Uniform通道既可以传递到
顶点着色器
,也可以传递到片元着色器
。
2.Uniform中传递的通常是比较统一的批次数据,不经常发生变动的数据
。
Texture Data
1.Texture Data跟Uniform一样,可以将数据传递到
顶点和片元着色器
。
2.由于顶点着色器主要是处理顶点数据的,我们将纹理数据传过去并没有多大的意义。而纹理的处理的逻辑主要是在片元着色器中进行的。
网友评论