应用程序阶段 Application
在CPU上运行,Cocos2dx单线程,碰撞检测,操作输入等
几何阶段 Geometry
在GPU中执行,每个图元和每个顶点的处理,主要执行顶点坐标变换,输出(0,0)到(1,1)坐标,及顶点光照等
模型及视图变换 Model & View Transform
模型变换转换的是模型的顶点和法线,当对象物体的坐标系应用模型变换后,模型就处于世界坐标系下。所有模型用对应的模型变换转换后,所有的模型处于相同空间。
视图变换目的是将摄像机放置原点,并对准,look-at朝-z方向,up朝y。此时为视觉空间
顶点着色 Vertex Shading
vertex shader编写
投影 Projection
将摄像机可见物体转换到单位立方体(规范可视体)中,与分辨率无关。从(-1,-1,-1)到(1,1,1)分正交投影与透视投影
裁剪 Clipping
处于可视体的图元才会被传递到光栅化
屏幕映射 Screen Mapping
每个图元的x,y坐标转换到屏幕的坐标系中
光栅化阶段 Rasterizer
计算一个多边形覆盖区域的每个点的颜色值
三角形建立 Triangle Setup
三角形遍历 Triangle Traversal
检查三角形覆盖的每个像素,并产生一个片段,遍历时对每个顶点属性进行线性插值
像素着色阶段 Pixel Shading
Pixel Shader编写,根据输入的线性插值,对每个像素执行PS,输出一个片段的颜色值
融合阶段 Merging
深度缓冲:将当前像素的深度(z)与深度缓冲区上同位置比较,若新z值小于缓冲区z值,则离摄像机近,更新缓冲区,若新z值大于,则被丢弃。对半透明图元无效。半透明图元需在所有不透明图元渲染后,按从后到前的顺序去渲染。
即不透明物体从前往后,因为被遮挡的部分无需渲染,透明物体从后往前,因为需要颜色混合
模板缓冲:通常每个像素占8bit。缓冲的内容可用于控制颜色缓冲和深度缓冲。如一个被填充的圆环已被渲染到模板缓冲中,通过某种操作可使后续图元仅在图形所出现的地方进行渲染。