放上来自己翻译的第一系列文章,是一个2D的开源免费的引擎叫HGE,官方网站http://hge.relishgames.com/,中文官方论坛http://www.hgechina.com。其实在论坛上已经有人翻译完了这个系列的教程,不过排版和翻译读起来总觉得不尽如人意,就有了自己翻译的打算。
HGE是用Direct3d来模拟2D,硬件加速,功能强大,具体介绍请看官网和中文论坛。
本系列共8章,绝对自己翻译,转载请注明出处:http://blog.csdn.net/liujian885邮箱:[email protected]
首先我们包含hge.h头文件并声明一个变量来存储HGE接口指针:
#include <hge.h>
HGE *hge = 0;
接着我们创建frame function。这是个用户定义的功能,每帧都会执行一次,这里将放置你的游戏循环代码。如果frame function返回true,HGE会停止游戏执行。
在这个例子中我们只是检查ESC键是否被按下。
bool FrameFunc()
{
if (hge->Input_GetKeyState(HGEK_ESCAPE)) return true;
return false;
}
WinMain函数是个标准的应用程序入口。这里我们会获得HGE接口的指针来访问HGE的函数。在这个例子中我们使用全局的HGE的接口指针。你可以用hgeCreate函数当你要访问HGE时,要确保对每个hgeCreate调用相应的Release函数。
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
hge = hgeCreate(HGE_VERSION);
接着我们设置一些HGE的内部状态来配置环境。虽然大多系统状态都有适当的默认值,至少HGE_FRAMEFUNC应该设置在System_Start前调用。
hge->System_SetState(HGE_FRAMEFUNC, FrameFunc);
hge->System_SetState(HGE_WINDOWED, true);
hge->System_SetState(HGE_USESOUND, false);
hge->System_SetState(HGE_TITLE,
"HGE Tutorial 01 - Minimal HGE application");
现在我们开始初始化HGE。如果有错误,System_Initiate会返回false和System_GetErrorMessage中可以读到的细节描述。
HGE初始化后,通过System_Start函数我们开始游戏循环。程序直到frame function返回true时结束。
if(hge->System_Initiate())
{
hge->System_Start();
}
else
{
MessageBox(NULL, hge->System_GetErrorMessage(), "Error",
MB_OK | MB_ICONERROR | MB_APPLMODAL);
}
当按下ESC键或用户关闭窗口时,我们应该恢复视频模式并释放分配的资源。当然我们要释放HGE接口。
hge->System_Shutdown();
hge->Release();
return 0;
}
看!只是20行代码我们就完成所有功能并且启动游戏环境!