|
|
接上一篇 http://bbs.gameres.com/showthread.asp?threadid=103135
这部分增加了一个重要的类CAppGame。IAppEntry是其虚基类。以后大部分的工作都跟CAppGame有关。
CAppGame是窗口部分与游戏部分的接口。其接口变量是theAppGame,WinApp通过AppEntryClass()函数来使用theAppGame。
为什么theAppGame要在AppGame.cpp里定义而不是WinApp中或全局共享?为什么要用AppEntryClass()来传递?这个我还不太理解。 [em5]似乎是为了结构清晰吧。
在WinApp.cpp中有4处AppEntryClass()的重要调用。
if( !AppEntryClass()->Initialize( g_hTheApp, g_hMainWnd ) )
AppEntryClass()->Terminal();
AppEntryClass()-> rocess();
LRESULT lr = AppEntryClass()->WndProc( msg, wParam, lParam );
WinApp.cpp通过这几个调用实现与游戏部分的接口。以后对WinApp.cpp的修改就很少了
对结构感到头晕的朋友请复习C++语言。
AppEntryClass()->Initialize()的作用是对游戏的各模块进行初始化。诸如图形设备,图片,文字显示等模块的初始化函数都是在这里调用的。
AppEntryClass()->Process()游戏的主处理函数,将包含游戏的主要逻辑和渲染。
CAppGame::Render()这就是主渲染函数。
AppEntryClass()->WndProc( msg, wParam, lParam )目前只发现一个作用,就是把经过渲染的图像显示到屏幕上。注意这个函数不是给windows调用的回调函数,他被回调函数AppWndProc()调用。
这一章只是提供了一个架构,还没有实质的东西,不过这个架构我觉得很好。为下面的工作奠定了基础。
欢迎讨论 [em2] |
|