第二章
2.1 渲染流程
应用阶段–>几何阶段–>光栅阶段
应用阶段:由我们的应用主导,通常由CPU实现,开发者具有绝对控制权。这一阶段最重要的的输出是渲染所需的几何信息,即渲染图元(点、线、三角面等)
在这一阶段,开发者有3个主要任务:
1.准备好场景数据,例如摄像机的位置、视锥体、场景中包含了哪些模型,使用了哪些光源等等
2.为了提高渲染性能,往往需要做一个粗粒度剔除工作,把那些不可见的物体剔除出去
3.设置好每个模型的渲染状态
几何阶段:用于处理所有和我们要绘制的几何相关的事情,通常在GPU上进行。例如(决定需要的绘制的图元是什么,怎样绘制它们,在哪里绘制它们)
几何阶段的一个重要任务就是把顶点坐标变换到屏幕空间中,再交给光栅器进行处理。通过对输入的渲染图元进行多步处理后,这一阶段将会输出屏幕空间的二维顶点坐标、每个顶点对应的深度值、着色等相关信息,并传递给下一个阶段。
光栅化阶段:使用上个阶段传递的数据来产生屏幕上的像素,并渲染出最终的图像。这一阶段也是在GPU上运行。
光栅化的任务主要是决定每个渲染图元中的哪些像素因该被绘制在屏幕上。它需要对上一个阶段得到的逐顶点数据(例如纹理坐标,顶点颜色等)进行插值,然后再进行逐像素处理。
2.2 CPU和GPU之间的通信
渲染流水线的起点是CPU,即应用阶段,应用阶段可分为:
(1)把数据加载到显存中
(2)设置渲染状态
(3)调用DrawCall
2.2.1 把数据加载到显存中
所有渲染所需的数据都需从硬盘中加载到系统内存中。然后,网格和纹理等数据又被加载到显卡上的存储空间(显存)。因为显卡对显存访问速度更快,而且大部分显卡对于RAM没有直接的访问权利