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只是小型的渲染引擎,但是学习它的架构,低于扎实我们的基础还是很有必要的。