根据在include\video下的EdriverTypes.h文件中定义的驱动器类型的排列顺序,我们开始看video impl\Software下的文件。遵照头文件的包含关系以及内容多少的原则,先看S2Dvertex.h文件,在该文件中实现了一个基于2D的顶点结构。
文件IZBuffer.h中声明了一个Z缓冲接口类,在CZBuffer.h/.cpp中,声明的Z缓冲类就是该接口类的派生类。有清空Z缓冲、设置或获取Z缓冲大小、锁定或解锁Z缓冲等方法。
在IK3DtriangleRenderer.h中,创建了一个三角形渲染器类型的枚举变量,可能你会觉得这个枚举结构里的内容很眼熟,因为在SMaterial.h文件中的材质标志的枚举变量,其内容指定相似。声明了一个三角形渲染器类。有设置渲染目标、从表面裁剪、纹理设置、各种不同渲染器的创建函数等方法。
在CSoftwareTexture.h/.cpp中,声明了一个继承自ITexture接口类的纹理接口类。该类实现了视频驱动程序所需纹理的各种相关处理。
文件CTRTextureGouraud.h/.cpp中,CRT意指Class、Triangle、Renderer,即三角形渲染器类。Gouraud是指高洛德着色。这种着色的效果比平面着色要好得多,也是在游戏中使用最广泛的一种着色方式。它可对3D模型各顶点的颜色进行平滑、融合处理,将每个多边形上的每个点赋以一组色调值,同时将多边形着上较为顺滑的渐变色,使其外观具有更强烈的实时感和立体动感,不过其着色速度比平面着色慢得多。这个类有设置一个渲染目标、设置背面剔除、根据索引列表绘制三角形、设置纹理、交换两个纹理结构体等方法,有多个与表面、纹理相关的成员变量。
OVER!今天解决9个代码文件,还剩92个。