Hieroglyph3是一個基於微軟最新圖形API:DirectX 11的渲染引擎,同時也是《Practical Rendering and Computation with Direct3D 11》的配套教材。它對DX11進行了更加方便易用的二次封裝,使得dx的使用更加方便,不必每次都手工重復敲那些冗長且大多數不變的代碼。Glyph3的運行框架基於類Application,其定義如下:

1 namespace Glyph3
2 {
3 class Application : public IEventListener
4 {
5 public:
6 Application();
7 virtual ~Application();
8
9 // Initialization functions
10 static Application* GetApplication( );
11
12 // Overloadable functions for end user
13 virtual bool ConfigureEngineComponents() = 0;
14 virtual void ShutdownEngineComponents() = 0;
15 virtual void Initialize() = 0;
16 virtual void Update() = 0;
17 virtual void Shutdown() = 0;
18
19 virtual bool HandleEvent( IEvent* pEvent );
20
21 // Request an exit from windows
22 void RequestTermination();
23
24 // Helpers
25 Timer* m_pTimer;
26
27 // Engine Components
28 EventManager* m_pEventMgr;
29
30 Scene* m_pScene;
31
32 protected:
33 // CApplication pointer to ensure single instance
34 static Application* ms_pApplication;
35 };
36 };
目前主要關注下面幾個函數:
virtual bool ConfigureEngineComponents() =0;
啟動引擎時候對用到的dx組件進行配置,如設置backbuffer,shader之類的。
virtual void ShutdownEngineComponents() =0;
引擎關系時候對資源進行釋放。
virtual void Initialize() =0;
當應用程序需要進行初始化時候,可在此函數內進行配置。
virtual void Update() =0;
每幀更新時,調用此回調函數。
virtual void Shutdown() =0;
應用程序關閉時候,調用此回調。
該框架對這幾個回調函數的調用順序代碼如下(為了瀏覽簡便,已去除了部分代碼):

1 int WINAPI WinMain( HINSTANCE h_Inst, HINSTANCE h_PrevInst, LPSTR lpcmdline, int ncmdshow)
2 {
3
4 m_pApp->ConfigureEngineComponents() )
5 m_pApp->Initialize();
6 while( bLoop )
7 {
8 while ( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
9 {
10 if ( msg.message == WM_QUIT )
11 {
12 bLoop = false;
13 break;
14 }
15 TranslateMessage( &msg );
16 DispatchMessage( &msg );
17 }
18
19 m_pApp->Update();
20 }
21 m_pApp->Shutdown();
22 m_pApp->ShutdownEngineComponents();
23 return( true );
24 }