DXUT 框架剖析(1) DXUT(也称sample framework)是建立在Direct3D API 之上的Direct3D 应用程序框架,有了DXUT 这样一个Direct3D 程序框架,只需在这个框架的基础上编写相应的代码,从而简化了windows 和 Direct3D API的使用,可以高效地进行Direct3D 程序设计。 生成一个Direct3D 程序框架 第一步,运行Direct3D 示例程序浏览器: 第二步,单击"EmptyProject"中的"Installl Project"安装工程: 第三步,在弹出的对话框中输入新工程的名称,修改该工程的创建路径,单击Install 即可创建工程: 第四步,系统将自动完成工程的创建,然后弹出对话框询问是否查看创建的工程文件夹中的内容: 若选择是,则可以查看新创建的工程文件夹的内容: 使用Direct3D 程序框架 通过上面的操作,Direct3D 已经为我们创建好了一个应用程序框架,该框架主要包括以下文件: 其中最主要的两个文件是DXUT.h 和 DXUT.cpp。 除了上面这些通用文件外,Direct3D 还生成了一个主程序文件,该文件的名字和工程名字相同,在此即是AppFrame.cpp。该文件主要由以下几个回调函数构成: bool CALLBACK IsD3D9DeviceAcceptable(D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat, bool bWindowed, void* pUserContext); bool CALLBACK ModifyDeviceSettings(DXUTDeviceSettings* pDeviceSettings, void* pUserContext); HRESULT CALLBACK OnD3D9CreateDevice(IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, vHRESULT CALLBACK OnD3D9ResetDevice(IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc, void* pUserContext); void CALLBACK OnFrameMove(double fTime, float fElapsedTime, void* pUserContext); void CALLBACK OnD3D9FrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext ); LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, bool* pbNoFurtherProcessing, void* pUserContext ); void CALLBACK OnD3D9LostDevice( void* pUserContext ); void CALLBACK OnD3D9DestroyDevice( void* pUserContext ); 函数名前使用"CALLBACK"表示声明的是一个回调函数,也就是说,这是DXUT 框架...