1. 渲染管线
计算机从一系列的顶点数据,纹理和信息出发,把这些信息转化为人眼所看到的图像,由CPU与GPU共同完成。
(从三维场景出发,渲染出一张二维图像)
可以分为三个阶段
1.1 应用阶段
由CPU负责实现,主要是将场景数据(摄像机,模型,光源)准备好;提高渲染性能(粗粒度提出culling);设置好每个模型的渲染状态 (材质,纹理,shader)。这阶段最重要的输出是渲染图元———由点,线,三角面等等,之后便会传递给几何阶段。
1.2 几何阶段
由GPU负责实现,主要是绘制图元相关,怎样/在哪里绘制。
几何阶段的一个顶点坐标变换到屏幕空间中,再交 给光栅器进行处理。
这对输入的渲染图元进行多步处理后,将会输出屏幕空间的二维顶点坐标,每个顶点的对应的深度值,着色相关信息,传递给下一个阶段。
1.3 光栅化阶段
由GPU负责实现,主要决定每个渲染图元中的哪些像素应该被绘制在屏幕上。
它需要对上一个阶段得到的逐顶点数据(纹理坐标,顶点颜色等)进行插值,再进行逐像素处理。
2.CPU与GPU之间的通信
2.1 把数据加载进显存中
渲染所需的数据都要从硬盘加载到系统内存,网格和纹理等数据再被加载到显存 VRAM 中。
这是因为显卡对显存访问速度更快,并且大多数显卡没有直接访问内存的权力。
2.2 设置渲染状态
渲染状态定义了场景中网格是怎样被渲染的。(类似于给不同的网格绑定不同的属性,Vertex shader ,fragment shader材质之类的吧)
2.3 调用Draw call
Draw call实际上是一个命令,由CPU发给GPU的命令,告诉GPU开始一个渲染过程。(渲染的参数在渲染状态已经绑定好了,Drawcall只
负责发信号)被渲染的单位也会由draw call指出。