上一篇根据函数的执行过程将D3DApp框架的主要函数看了一遍,不过后来发现漏了一个非常重要的地方,就是消息处理。这个框架的消息处理函数为WndProc,写得非常完备,特别是在窗口缩放和全屏等地方。那么对于我们来说,其实最重要的地方就是处理WM_PAINT时调用Render函数进行渲染。
下面是D3DApp框架自带的描述:
//-----------------------------------------------------------------------------
// Name: class CD3DApplication
// Desc: A base class for creating sample D3D9 applications. To create a simple
// Direct3D application, simply derive this class into a class (such as
// class CMyD3DApplication) and override the following functions, as
// needed:
// OneTimeSceneInit() - To initialize app data (alloc mem, etc.)
// InitDeviceObjects() - To initialize the 3D scene objects
// FrameMove() - To animate the scene
// Render() - To render the scene
// DeleteDeviceObjects() - To cleanup the 3D scene objects
// FinalCleanup() - To cleanup app data (for exitting the app)
// MsgProc() - To handle Windows messages
//-----------------------------------------------------------------------------
这里放的是CD3DApplication类,实际上在这个框架中,主要是由这个类完成工作,而且我们需要自定义工作时所需要重写的函数主要也就是上面所列出的几个函数(Gaia框架对此进行了扩展,需要重写的函数多了一些)。D3DApp框架中的其他类的函数基本上不需要重写。下面是我根据执行过程将重要的几个函数串在了一起,作为D3DApp框架阅读的结束。