[HGE]-源码分析-13system (b)

    所有的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值