渲染指令发出函数

设计绘制指令函数如下:

图-1

调用Draw函数之前,必须绑定好需要绘制的VAO/EBO
drawMode: 绘制直线/三角形
first: 从EBO的第几个index开始绘制
count: 绘制EBO当中多少个index的顶点

图-2

渲染函数流程规划

图-3

Shader类规划

设计Shader类的虚基类

图-4

Uniform变量

分析对于一个Mesh的一次Draw调用
对于Shader而言,每次VertexShader调用都会传入不同顶点的属性;每次FragmentShader都会传入不同片元数据;
但是每个顶点都会使用相同的model/view/projection矩阵,每个Fragment都会使用相同的光照数据

Uniform变量: 把每次vs公用数据以及每次fs公用数据进行抽取,从而构成统一且公用的数据

不同种类的Shaser子类,其Uniform变量也不尽相同;

举例: Default Shader

图-5

DefaultShader->Shader

图-6