你的第一个CEGUI程序

你的第一个CEGUI程序
强烈建议仔细研究CEGUISample程序!因为那里介绍了它的一些基本用法,其实最后在游戏当中出现的,也就是这些例子的变化而已。
这里我会引导你写一个第一个自己的简单的CEGUI程序,它使用CEGUISampleHelper提供的框架,使用OpenGL渲染。
这是在CEGUI自己给的Sample程序基础上简化、简化、再简化得出的,目的是让大家对CEGUI程序有一个简单明了的认识,其实就是这么简单。里面只定义了一个背景,一个静态文本,写着“Hello!CEGUI”。
具体的,有几块重要的东西。有一些包含在框架里了,如下:
DefaultResourceProvider,这个是CEGUI的一个全局的东西,可以在任何地方操作它的指针,但是一般只需要在一开始操作它。
在CEGuiOpenGLBaseApplication当中,你可以看见下面这样的代码,这就是在使用DefaultResourceProvider的指针在设置资源的路径,你可以毫不客气地复制粘贴到你的工程里
 CEGUI::DefaultResourceProvider *  rp  =  static_cast < CEGUI::DefaultResourceProvider *>
        (CEGUI::System::getSingleton().getResourceProvider());

    rp
-> setResourceGroupDirectory( " schemes " " ../datafiles/schemes/ " );
    rp
-> setResourceGroupDirectory( " imagesets " " ../datafiles/imagesets/ " );
    rp
-> setResourceGroupDirectory( " fonts " " ../datafiles/fonts/ " );
    rp
-> setResourceGroupDirectory( " layouts " " ../datafiles/layouts/ " );
    rp
-> setResourceGroupDirectory( " looknfeels " " ../datafiles/looknfeel/ " );
    rp
-> setResourceGroupDirectory( " lua_scripts " " ../datafiles/lua_scripts/ " );
下面是整个的代码:
#ifndef _TDemo0_h_
#define  _TDemo0_h_

#include 
" CEGuiSample.h "
#include 
" CEGUI.h "

//  例子类
class  TDemo0Sample :  public  CEGuiSample
{
public:
    
// 用于实现初始化的方法
    bool initialiseSample();

    
// 关闭
    void cleanupSample(void);   
}
;
#endif   // _TDemo0_h_

 

 


#include 
" TDemo0.h "
#include 
" CEGUI.h "
#include 
" CEGuiBaseApplication.h "
#include 
< cstdlib >

/*************************************************************************
    程序入口
************************************************************************
*/

int  main( int  argc,  char   * argv[])
{
    TDemo0Sample app;
    
return app.run();
}


/*************************************************************************
    实现初始化方法
************************************************************************
*/

bool  TDemo0Sample::initialiseSample()
{
    
using namespace CEGUI;

    
// 得到窗口管理器
    WindowManager& winMgr = WindowManager::getSingleton();
    
// 装载资源,只说一下scheme就行,其它的system自己去调
    SchemeManager::getSingleton().loadScheme("TaharezLook.scheme");
    
// 鼠标指针很特殊,但是其实是一样的用法
    System::getSingleton().setDefaultMouseCursor("TaharezLook""MouseArrow");
    
// 字体
    FontManager::getSingleton().createFont("Commonwealth-10.font");

    
// 这里创建了一个window。第一个参数指定了这个window的类型,第二个参数是名字。
    Window* background = winMgr.createWindow("TaharezLook/StaticImage""background_wnd");
    
    
// 设置位置和大小
    background->setPosition(UVector2(cegui_reldim(0), cegui_reldim( 0)));
    background
->setSize(UVector2(cegui_reldim(1), cegui_reldim( 1)));

    
// 这就要把刚才那个background用作最底层的窗口了
    System::getSingleton().setGUISheet(background);

    
// 其实这个在这里没啥用,我认为,只是多了一层窗口。在任何UI系统当中所有的窗口都是一样的。
    Window* sheet = winMgr.createWindow("DefaultWindow""root_wnd");

    
// 叠加上
    background->addChildWindow(sheet);

    
// 又创建了一个窗口,这回是一个静态的文本
    Window* st = winMgr.createWindow("TaharezLook/StaticText""TextWindow/Static");
    sheet
->addChildWindow(st);
    st
->setPosition(UVector2(cegui_reldim(0.45f), cegui_reldim( 0.23f)));
    st
->setSize(UVector2(cegui_reldim(0.15f), cegui_reldim( 0.05f)));
    st
->setText("Hello!CEGUI");
   
    
return true;
}


/*************************************************************************

************************************************************************
*/

void  TDemo0Sample::cleanupSample()
{
    
// 啥事也不做
}

好了,现在可以新建一个工程,模仿其它例子的工程结构,然后用这个代码,编译,就OK了。
这就是(或者几乎是一个)最简单的CEGUI程序,其实就是这么简单。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值