quake2源码分析(一)
我希望通过quake2的源码分析来理解这个优秀引擎的动作方式。
由于我比较熟悉delphi的代码组织方式,故从http://www.sourceforge.net/quake2delphi/下载了quake2的delphi代码来进行分析。
说明:为了描述的简单化,我没有对细节方面进行描述。
下面让我们进入正题:
起始点:
sys_win: WinMain 这是我们非常熟悉的windows入点
Qcommon_Init //qcommon是通用模块,进行通用模块的初始化,这个步骤处理的东西相当多,下一步会详细讲解
while(true)
Qcommon_Frame(time) //绘制每一帧
简单地说WinMain要处理的主要就是这两步操作
下面让我们分析一下初始化操作:
Qcommon_Init的内容
//一 初始化z_chain
z_chain.prev := @z_chain;
z_chain.next := z_chain.prev;
//二 初始化参数
COM_InitArgv(argc, argv);
//三 初始化交换算法及命令行缓冲区
Swap_Init;
Cbuf_Init;
//四 命令解释器的初始化
Cmd_Init;
//五 变量操作的初始化
Cvar_Init;
//六 键盘映射表初始化
Key_Init;
//七 初始化命令行,然后初始化文件系统
Cbuf_AddEarlyCommands(False);
Cbuf_Execute;
FS_InitFilesystem;
//八 运行脚本
Cbuf_AddText('exec default.cfg'#10);
Cbuf_AddText('exec config.cfg'#10);
Cbuf_AddEarly