zoukankan      html  css  js  c++  java
  • 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 }






  • 相关阅读:
    Javascript之DOM的三大节点及部分用法
    Javascript之全局变量和局部变量部分讲解
    《TCP/IP详解 卷1:协议》系列分享专栏
    说一说MySQL的锁机制
    《TCP/IP详解 卷1:协议》第3章 IP:网际协议
    PHP连接MySql闪断自动重连的方法
    关于MySQL的锁机制详解
    React 源码中的依赖注入方法
    《Mysql高级知识》系列分享专栏
    《AngularJS学习整理》系列分享专栏
  • 原文地址:https://www.cnblogs.com/Baesky/p/Glyph3_1.html
Copyright © 2011-2022 走看看