Irrlicht学习之创建GUI界面
Irrlicht游戏引擎自带了GUI模块,可以在三维的场景中创建二维的覆盖(Overlay),使得游戏中图标和文字的显示更为方便,配合游戏高效的三维渲染能力,相得益彰。
这一次我将尝试用代码对GUI进行显示,我们的目标是在窗口中既要显示三维的背景也要显示二维的界面菜单,想做得和DirectX的例子CustomUI那样,但也不要制作得那么复杂,符合游戏的实际情况即可。
演示程序和源代码下载地址:这里
下面就是例子程序的截图:
例子中使用Irrlicht的IGUIEnvironment*类型作为渲染GUI控件的基础,在此基础上显示玩家名称、玩家头像、HP和MP条以及背包按钮。由背包按钮可以触发Equipment对话框,下面有三个选项。背景中使用的是Quake3的地图;创建了一个可以绕着Y轴旋转的旋转摄像机。
下面就是程序代码。程序也比较简单,没有考虑多次点击Backpack按钮出现的多个窗口的情况,但程序可以说明我们能用Irrlicht创建一个简单的GUI界面。顺便说一下,Irrlicht中没有进度条控件!要是创建血槽什么的还得自己绘制了,这多多少少给我们添加了麻烦。
开发环境:
Windows:Windows8 + msvc2008+ Visual Studio2008 + Irrlicht1.7.3
Linux:Ubuntu13.10 + gcc4.8+ Qt Creator2.8 + Irrlicht1.7.3
#include <irrlicht.h>
// 针对Windows系统的配置
#ifdef _IRR_WINDOWS_
#pragma comment( lib, "Irrlicht.lib" )
#pragma comment( linker, "/subsystem:windows /ENTRY:mainCRTStartup" )
#endif
// 定义空指针
#ifndef nullptr
#define nullptr 0
#endif
using namespace irr;
using namespace core;
using namespace video;
using namespace scene;
using namespace gui;
using namespace io;
enum
{
ID_BACKPACK_BUTTON = 101
};
class RotateYCamera// 沿着Y轴旋转的FPS摄像机
{
public:
RotateYCamera(
ISceneManager* pSceneManager,
const vector3df& pos,