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

本文介绍了Hieroglyph3(DX11渲染引擎),重点分析了核心类Application的方法:ConfigureEngineComponents(配置引擎组件)、ShutdownEngineComponents(释放资源)、Initialize(初始化)、Update(更新)及Shutdown(关闭)。通过示例代码展示了这些方法如何被调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 }






转载于:https://www.cnblogs.com/Baesky/archive/2012/03/23/Glyph3_1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值