如果把渲染引擎看做一个画家,那么画家开始作画之前需要做一系列的准备工作,譬如:布置好场景,摆好画架,钉好画布,调整好灯光,准备号画笔油彩,站好位置,然后才能开始下笔作画。前期的这一系列准备过程在d3d和ogl这样的渲染api中对应了一系列的接口函数,这些函数初看起来又多又乱,有时调用顺序还有一定的耦合,性,因此需要精心的组织这些接口,一种比较好的方法是将这些接口组织成一个叫做渲染上下文(rendering context)的类。
这个类中具体包含哪些东西呢,罗列起来可以有这些:
1. 视图设置相关(正交/投影,视口参数设置)
2. 绘制缓冲相关(创建删除缓冲,绑定缓冲,设置当前缓冲,清除缓冲,设置背景颜色)
3. 贴图参数相关(是否使用贴图,贴图Filter模式,Wrap模式,MipMap等)
4. shader相关(创建/删除shader,设置shader参数)
5. 缓冲数据相关(顶点缓冲,索引缓冲等)
6. 材质相关(diffuse,embient,specular,emit等)
7. 矩阵相关(world,view,project等,及相关旋转、平移、缩放操作)
8. 裁剪
9. alpha(blend,test)
10. stencil-test
11. fog
12. 灯光(启用/关闭、灯光参数)