1. 渲染架构图

上图是 OpenGL 渲染的大致架构,从图中我们可以看出,OpenGL 渲染架构分为Client(客户端)和Server(服务端),这里的客户端和服务端并不是我们以前认知的,而是
- Client(客户端):OpenGL 的客户端主要包含 OpenGL 的 API 和 iOS 的其他代码,运行在
CPU
中。 - Server(服务端):OpenGL 的服务端主要包含 OpenGL 的底层渲染处理,运行在
GPU
中。
图中的 Attributes、Uniforms 和 Texture Data 都是 Client 和 Server 之间的数据传输通道,下面分别看看这三个通道的特点
- Attributes:只能传输到顶点着色器,参数一般为经常发生变动的数据,如:顶点数据、光照坐标、投影矩阵以及纹理坐标(即图片映射坐标,通过顶点着色器桥接给片源着色器)、光照法线等。
- Uniforms:可以传输到顶点着色器和片元着色器,参数一般为不经常发生变动的数据,如统一批次类数据(变换矩阵、颜色值等)。
- Texture Data:可以传输到顶点着色器和片元着色器,一般传输纹理数据,但纹理数据传输给顶点着色器没什么用,所以一般传输给片元着色器。
上图中 Primitive Assembly 的过程译为图元装配,也可以译为光栅化。
以上就是 OpenGL 的渲染流程,当然 OpenGL 提供固定管线,其中的存储着色器已经将上面的步骤封装起来,我们只需知道怎么用即可。接下来我们通过渲染几个 3D 图形的 Demo 来熟悉一下开发及渲染流程。
网友评论