Hieroglyph3(基于DirectX 11的开源渲染引擎) 框架分析
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 }
分类:
DirectX Journal
标签:
DirectX 11
, Engine
posted on 2012-03-23 14:45 Meta.Grfx 阅读(2637) 评论(4) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?