在刚开始学习游戏编程入门(beginning game programming)时,会发现对书中的代码非常的陌生,心里没有底的感觉,后来无意间看了孙鑫老师的C++教程前两章,才发现许多代码是C++应用程序中固定的写法,窗口编程中的创建窗口的步骤也是固定的,在回来看游戏编程入门时,发现游戏引擎就是吧一般应用程序所要做的事情放到游戏引擎中,把初始化和消息的方法传递到特定的方法中,由程序的其他部分来实现。感觉对引擎的认识更提高了一步,废话不多说,上例子说明:
游戏引擎头文件(GameEngine.h)
这个是书上的例子,主要是看Windows Function Declarations这个部分,就是windows函数申明,在应用程序中本来就是以WinMain做入口的,这里放到引擎类中来实现。下面是GameEngine.cpp文件中的WinMain部分:
重点是GameInitialize(hInstance)方法和
if (!GameEngine::GetEngine()->Initialize(iCmdShow))
return FALSE;
这两行代码,具体查看里面的代码是这样的:
GameInitialize方法是实例化游戏引擎类,并初始化一些参数,而Initialize方法则让我一开始摸不着头脑,这些代码书中并没有具体的解释为什么,如果知道C++应用程序的窗口创建,那么这段代码是再熟悉不过的了,就像标准写法一样:申明窗口、设计窗口、注册窗口、现实窗口、刷新窗口。游戏引擎类巧妙的将这些固定的代码放在引擎中初始化了,而且可以很好的进行复用。
再回头看看WinMain代码中的:
发现这就是标准API代码中消息循环处理的代码,不同的是消息处理循环中加上了游戏引擎独特的时间片操作处理部分,这样设计让游戏引擎的功能更加完整。
小结
国外的这些参考书买来直接啃,有时候会消化不良,和我们原来学校中看的教材相差太大了,这些实用性较高的参考书籍,已经撇开了许多琐碎的基础知识,直接就上和书本有关系的信息,对读者有一定基础的要求,阅读这类书时还真的自己花时间补下基础,再回头看书,效果会十分明显。