渲染管线
- GPU百科大全
-
openGL 是一套软件技术, 它采用 C(CPU)S(GPU) 结构, c 是给 s 传递顶点和纹理信息的, s 主要用来显示图像
渲染流程详细介绍
-
流程图
GPU 首先从 vertex buffer 中读取数据,然后通过 vertex shader 计算出各个顶点的具体位置
通过图元组装基本构成一个骨架
因为屏幕上只有二维坐标系, 所以后续的操作是把三维的坐标系光栅化为二维
- 然后通过 fragment shader 映射出各个 vertex 所对应的像素值当所有东西都准备好的时候把这些信息渲染到帧缓存中等待显示
各种名词的解析
- VBO( Vertex Buffer Object ) / VAO (Vertex Array Object)
VBO 其实是用来存放顶点的缓冲区, VAO 是用来提高效率而诞生的,因为如果每次 CPU 向 GPU 传递相同的数据会浪费很多不必要的性能, 因此 VAO 通过记录一系列顶点的状态来达到没必要每次都要传递相同的数据给 GPU 提高性能
vertex shader
屏幕上每个顶点都会通过 vertex shader 计算出具体的位置, 因此我们需要在这里可以使用相关的数学知识来达到我们想要的效果
图元组装
图元是一个个三角形把顶点着色器输出的顶点组合成图元。
rasterization (光栅化)
光栅化是将图元转化为一组二维片段的过程,然后,这些片段由片段着色器处理(片段着色器的输入)。这些二维片段代表着可在屏幕上绘制的像素。用于从分配给每个图元顶点的顶点着色器输出生成每个片段值的机制称作插值(Interpolation)。这句不是人话的话解释了一个问题,就是从cpu提供的分散的顶点信息是如何变成屏幕上密集的像素的,图元装配后顶点可以理解成变为图形,光栅化时可以根据图形的形状,插值出那个图形区域的像素(纹理坐标v_texCoord、颜色等信息)。注意,此时的像素并不是屏幕上的像素,是不带有颜色的。接下来的片段着色器完成上色的工作。
FragmentShader
根据纹理的顶点坐标,从烘培好的纹理中采样对应顶点所对应的纹理
helloWorld sample
openGLES-turorial-01-helloworldtriangle