OpenGL中的渲染架构如下图
OpenGL中的渲染架构
这个图主要分为两部分,Client和Server。
- Client指的是应用层代码(比如iOS)和OpenGL的API。是在CPU中。
- Server指的是OpenGL底层API,可以直接驱动GPU渲染的,在GPU中。
在Server中,iOS开发者通过传入数据对顶点着色器和片元着色器自定义编程,无法对图元装配、渲染模块自定义,这是由系统自己做。
那么客户端的代码怎么把数据传入到顶点着色器、片元着色器的呢?
客户端和服务器数据传输有三个通道:Attributes、Uniforms、Texture Data。
通道名 | 传输的数据类型 | 传输的着色器 |
---|---|---|
Attributes | 顶点坐标(x、y、z)、光照坐标、投影矩阵、模型矩阵、纹理坐标 | 顶点着色器 |
Uniforms | 统一批次的数据 | 顶点着色器、片元着色器 |
Texture Data | 纹理数据 | 顶点着色器、片元着色器 |
- Attributes:主要用来传输数据,常用的顶点坐标、光照坐标、投影矩阵、模型矩阵、纹理坐标(图片映射坐标,只能经由顶点着色器桥接传入片元着色器)等。
- Uniforms:用来传输统一批次的数据,不经常改动的数据,比如变换矩阵、颜色、时间戳等。
- Texture Data:用来传输纹理数据,可以传入顶点着色器、片元着色器。片元着色器中处理纹理数据,虽然可以传入顶点着色器,但是顶点着色器不处理纹理的数据,所以没什么意义。
网友评论