当前位置: 首页 > 工具软件 > Horde3D > 使用案例 >

3D引擎:Horde3D:App类

姬寂离
2023-12-01
Horde3D引擎  主要位于 Horde3D/Source/Horde3DEngine/Debug/下的 Horde3D.lib。 其源码位于Horde3D/Bindings/C++/Horde3D.h和 Horde3D/Source/Horde3DEngine/下的cpp文件里

Horde3D引擎资源的加载API 主要是 位于Horde/Source/Horde3DEngine/Debug/下的Horde3DUtils.lib。其源码位于Horde3D/Bindings/C++/Horde3DUtils.h和 Horde3D/Source/Horde3DUtils/下的main.cpp文件里


构建一个 Application类, 用于初始化Horde3D引擎

在Horde3D中,所有Samples的 Application类都为:

class Application
{
public:
    Application(const std::string &appPath);

    void setKeyState(int key, bool state){_prevKeys[key] = _keys[key]; _keys[key] = state;}

    const char *getTitle(){return "*";}
    
    bool init();
    void mainLoop(float fps);
    void release();
    void resize(int width, int height);
   
    void keyStateHandler();
    void mouseMoveEvent(float dx, float dy);
 
private:
     void keyHandler();


private:
    bool        _keys[320], _prevKeys[320];
    
    float        _x, _y, _z, _rx, _ry;   // Viewer position and orientation
    float        _velocity;   //Velocity for movement
     float       _curFPS;

     int          _statMode;
     int          _freezeMode;
     int          _debugViewMode,  _wireframeMode;

      //Engine objects
    H3DRes     _fontMatRes,  _panelMatRes,  _logoMatRes;
    H3DNode   _cam;

    std::string _contentDir;
  
}
我们按照 私有变量,  构造函数简介, 构造函数,init方法, 私有方法,的顺序来一步一步解释。

私有变量
   _keys[320], _prevKeys[320] 存储的是相应的按键状态,true 或 false。  _prevKeys 是用来放置引擎未初始化前发生按键触发的异常情况。  
    _velocity 是来设置 移动的速度
    freezeMode 是用来控制 引擎的渲染,当按两下space freezeMode = 2时 游戏画面 停止。  


构造函数: Application:
   主要初始化上面的私有变量, 如_x, _y, _z 设置位置, _rx, _ry 设置角度 。  _curFPS设置为 30帧。  
     指针初始化为0

   Application接收一个 appPath, 通过这个路径,找到 资源加载的位置。

init()函数
   init()函数是用来初始化引擎的,并且加载资源,和场景节点。
   引擎中的API 都是以 h3d开头的。
   
mainLoop() 函数
   它是用来渲染 场景的。

其它的API还有 release(), resize, keyStateHandler  分别是释放APP 改变场景大小,  和 外设控制等。

关于以上 函数,我会通过 写一个加载文字Logo的demo来一步一步分析,从而达到逐步了解整个引擎的作用

Horde3D只是小型的渲染引擎,但是学习它的架构,低于扎实我们的基础还是很有必要的
   
    
   
   
    
    

 类似资料: