本章首先讲解了实现Doom3 PROC场景解析和渲染的三个类的实现。

  • 第一个是Doom3Application类,该类继承自CameraApplication类,因此你可以任意的移动或旋转摄像机,从而达到在Doom3 PROC场景中进行漫游的目的。Doom3Application内部的run虚函数被覆写(override),在内部调用了Doom3ProcScene类的parseDoom3Map方法来解析场景文件并加载所有的纹理,当整个渲染资源准备就绪后,就调用Doom3ProcScene类的draw方法不停的渲染整个场景。

  • 由于Doom3ProcScene类的的parseDoom3Map方法在内部使用了Doom3ProcParser类来进行PROC文本文件的解析,因此我们重点来了解Doom3 PROC文件格式,实现核心的parse方法。

  • 一旦PROC文件格式解析成功后,就要进入渲染流程。整个Doom3 PROC的渲染是由Doom3ProcScene类实现的。除此之外,Doom3ProcScene类还是实现了loadTextures方法从服务器加载纹理数据。

  • 当完成Doom3 PROC整个场景的解析和渲染操作后,我们引入了摄像机视截体可视性判断的相关的技术,该技术从摄像机类生成Frustum对象,Frustum对象表示摄像机的一个可见性区域,与该可是区域相交的物体都应该被渲染。

  • 为了支持这种操作,我们又实现了AABB包围盒类,最终我们使用了Frustum和AABB包围盒相交检测的技术来快速的了解包围盒内的物体是是否可见,任何不可见的物体全部不用进入渲染流水线,从而加速WebGL的绘制速度。