CPU和GPU之间的通信

渲染流水线的起点是CPU,即应用阶段。大致可分为下面三个阶段:

1.把数据加载到显存

2.设置渲染状态

3.调用DrawCall

1.把数据加载到显存

所有渲染所需要的数据都需要从硬盘(Hard Disk Drive, HDD)中加载到系统内存(Random Access Memory,RAM)中。然后,网格和纹理等数据又被加载到显卡上的存储空间:显存(Video Random Access Memory,VRAM)中。这是因为显卡对于显存的访问速度更快,而大多数显卡对于RAM没有直接的访问权利。

CPU和GPU之间的通信_第1张图片

注意:真是渲染中需要加载到显存的数据复杂的多。例如:顶点的位置信息、法线方向、顶点颜色、纹理坐标等。

之后,开始通过CPU来设置渲染状态,从而使GPU进行渲染工作。


2.设置渲染状态

渲染状态:通俗的解释就是,这些状态定义了场景中的网格是怎样被渲染的。例如:使用哪个顶点着色器/片段着色器、光源属性、材质等。如果我们没有更改渲染状态,那么所有的网格都将使用同一种渲染状态。

CPU和GPU之间的通信_第2张图片

设置好渲染状态后,CPU需要调用一个渲染命令来告诉GPU开始进行渲染,这个渲染命令就是DrawCall。

3.调用DrawCall

DrawCall就是一个命令,它的发起方是CPU,接收方是GPU。这个命令仅仅会指向一个需要被渲染的图元(primitives)(点、线、三角面)列表,而不会包含任何材质信息(因为已经在2中完成了)。

当给定一个DrawCall时,GPU会根据渲染状态(例如:材质、纹理、着色器等)和所有输入的顶点数据进行计算,最终输出像素。CPU和GPU之间的通信_第3张图片














你可能感兴趣的:(CPU和GPU之间的通信)