如果把渲染引擎看做一个画家,那么画家开始作画之前需要做一系列的准备工作,譬如:布置好场景,摆好画架,钉好画布,调整好灯光,准备号画笔油彩,站好位置,然后才能开始下笔作画。
前期的这一系列准备过程在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. 灯光(启用/关闭、灯光参数)