
OpenGL渲染架构
OpenGL的渲染架构主要分为两部分,Client和Server。Client指的是调用OpenGL API的客户端代码,Server指的是OpenGL完成渲染的底层实现逻辑。
Attributes
Attributes是传递图形相关属性的通道,包括顶点数据、变换矩阵、投影矩阵、纹理坐标(图片映射坐标)等。Uniforms
Uniforms是批次传递数据的通道,这些数据一般不会被频繁修改,比如变换矩阵、颜色值等。Texture Data
Texture Data是传递纹理数据的通道。Vertex Shader
顶点着色器,一般用于处理顶点数据,支持用户自定义编程。可以通过Attributes、Uniforms和Texture Data这三个通道传入图形相关信息,但它不能处理像素,所以传入的纹理数据会通过桥接变化来间接传递给片元着色器。Primitive Assembly
图元装配,通过顶点着色器出传递过来的顶点数据以及连接方式,得到构成图形所需要的所有图元(点、线、三角形)。Fragment Shader
片元着色器,用来对像素进行着色和填充,支持用户自定义编程。可以通过Uniforms和Texture Data这两个通道传入图形相关信息
从渲染架构图可以得知,整个渲染流程如下:
- 客户端代码调用OpenGL API。
- OpenGL通过三个通道来将图形信息传递给顶点着色器和片元着色器。
- 顶点着色器处理完顶点数据后,再通过图元装配,得到构成这个图形的所有图元。
- 片元着色器对图元经过光栅化后转化成的栅格数据进行运算,再对像素点进行着色和填充,这样就完成了图形渲染。