所有的GET和SET
在接口里它们只是很低调的两个函数
但是。。这个和DX里SetRanderState形式一样的函数的实现有好多个
看名字可以直接可以知道是按输入类型分的
具体的它们的使用方式看一眼hge.h里的一段代码就清楚了
private:
virtual void CALL System_SetStateBool (hgeBoolState state, bool value) = 0;
virtual void CALL System_SetStateFunc (hgeFuncState state, hgeCallback value) = 0;
virtual void CALL System_SetStateHwnd (hgeHwndState state, HWND value) = 0;
virtual void CALL System_SetStateInt (hgeIntState state, int value) = 0;
virtual void CALL System_SetStateString(hgeStringState state, const char *value) = 0;
virtual bool CALL System_GetStateBool (hgeBoolState state) = 0;
virtual hgeCallback CALL System_GetStateFunc (hgeFuncState state) = 0;
virtual HWND CALL System_GetStateHwnd (hgeHwndState state) = 0;
virtual int CALL System_GetStateInt (hgeIntState state) = 0;
virtual const char* CALL System_GetStateString(hgeStringState state) = 0;
public:
inline void System_SetState(hgeBoolState state, bool value) { System_SetStateBool (state, value); }
inline void System_SetState(hgeFuncState state, hgeCallback value) { System_SetStateFunc (state, value); }
inline void System_SetState(hgeHwndState state, HWND value) { System_SetStateHwnd (state, value); }
inline void System_SetState(hgeIntState state, int value) { System_SetStateInt (state, value); }
inline void System_SetState(hgeStringState state, const char *value) { System_SetStateString(state, value); }
inline bool System_GetState(hgeBoolState state) { return System_GetStateBool (state); }
inline hgeCallback System_GetState(hgeFuncState state) { return System_GetStateFunc (state); }
inline HWND System_GetState(hgeHwndState state) { return System_GetStateHwnd (state); }
inline int System_GetState(hgeIntState state) { return System_GetStateInt (state); }
inline const char* System_GetState(hgeStringState state) { return System_GetStateString(state); }
代码是这么个情况:
在hge.h里面声明了接口(private的,在hge_impl.h继承HGE后重新声明并且在system里实现)
这些函数的调用是通过HGE里的System_SetState()
我们拿到手使用的接口是HGE_Impl类的对象,由于多态的效果,调用System_SetState()的时候就会调用相应的
实现好的状态设置函数
在一个一个看这些函数之前
先看看可以设置的参数:
说明用法之后代码里面的东西就很容易明白在干什么了。
SET的
1
HGE_FRAMEFUNC
调用举例:
hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
就是在WinMain里设定我们的帧函数(每一帧都调用的函数)。
第二个参数是函数名,这个函数没有参数,返回一个bool,返回true表示退出,所以在HGE程序中要退出就让你的帧函数返回true。
2
HGE_RENDERFUNC
调用举例:
hge->System_SetState(HGE_RENDERFUNC, RenderFunc);
绘制函数,依然是每一帧都要调用的
这个绘制函数同样不带参数,而且总是返回false
3,4,5,6
HGE_GFXRESTOREFUNC
指向一个用户自定义函数,此函数会在现存内容丢失时被调用(例如:视频模式切换时)。 所有纹理会被自动恢复,此函数只对render targets有意义。
此函数不带参数,如果执行成功,将返回true,否则返回false。 可以在你想要的任何时间设置和改变
HGE_FOCUSL