Hieroglyph3(基於DirectX 11的開源渲染引擎) 框架分析


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

View Code
 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;

應用程序關閉時候,調用此回調。

該框架對這幾個回調函數的調用順序代碼如下(為了瀏覽簡便,已去除了部分代碼):

View Code
 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 }







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM