一些图形学的概念介绍,个人摘抄或整理,作为个人文章的词条引用;
应用阶段流水线:
渲染流水线的起点是CPU,即应用阶段;应用阶段大致可分为下面三个阶段:
把数据加载到显存中:
所有渲染所需的数据都需要从硬盘(HDD)中加载到系统内存(RAM)中;然后,网格和纹理等数据又被加载到显卡上的存储空间——显存(VRAM)中;这是因为,显卡对于显存的访问速度更快,而且大多数显卡对于RAM没有直接的访问权限;加载在显存中,在渲染时,GPU可以快速访问这些数据;加载在显存中的数据有顶点的位置信息、法线方向、顶点颜色、纹理坐标等等;
当把数据加载到显存中后,RAM中的数据就可以移除了;但对于一些数据来说,CPU仍然需要访问它们(比如CPU要访问网格数据来进行碰撞检测),那么可能就不移除这些数据,因为从硬盘加载到RAM的过程是十分耗时的;
设置渲染状态:
在以上过程之后,开发者还需要通过CPU来设置渲染状态,从而指导GPU如何进行渲染工作;通过设置渲染状态,来定义场景中的网格如何被渲染;
调用Draw Call:
在准备好上述所有工作后,CPU就需要调用一个渲染命令来通知GPU开始渲染工作,即Draw Call命令;它的发起方是CPU,接收方是GPU;这个命令仅仅会指向一个需要被渲染的图元(primitives)列表,而不会再包含任何材质信息——因为我们已经在上一个阶段中完成了;
当给定了一个Draw Call时,GPU就会根据渲染状态(例如材质、纹理、着色器等)和所有输入的顶点数据来进行计算,最终输出成屏幕上显示的像素;这个计算过程则属于GPU流水线;