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 }






posted on 2012-03-23 14:45  Meta.Grfx  阅读(2627)  评论(4编辑  收藏  举报

导航