CEGUI编写第一个示例的过程
先说一下如何直接在CEGUISample中添加一个自己的HelloWorld。貌似简单,期间动手实验各种麻烦。本人C++基础差劲,所以遇到各种问题。做一下记录。废话结束开始正题。建立步骤:
1.第一步当然是新建项目,项目当然得建在例子的解决方案中。右键“解决方案”--“添加”--“新建项目”
完成以上步骤后,解决方案的目录如下
然后右键选择自己建立的新项目--选择“项目依赖项”--如图选中CEGUISampleHelper
以上为新项目的准备阶段,权当作第一步.
2.建立一个类,准备实现第一个HelloWord。右键项目添加类,这里就不废话了。这里我添加了一个Hello类。VS2008自动为我添加了Hello.c和Hello.cpp。
3.将Sample_FirstWindow中的源码选择性复制一下。并导入CEGuiSample.h和CEGUI.h
源码如下:
#ifndef _Hello_h_ #define _Hello_h_ #include "CEGuiSample.h" #include "CEGUI.h" class Hello : public CEGuiSample { public: Hello(void); ~Hello(void); bool initialiseSample(); void cleanupSample(void); }; #endif
然后将FirstWindow中cpp中的代码复制到自己建的项目中的cpp中。
cpp中的代码如下:
#include "Hello.h" #include "CEGUI.h" Hello::Hello(void) { } Hello::~Hello(void) { } int main(int /*argc*/, char* /*argv*/[]) { Hello app ; return app.run(); } bool Hello::initialiseSample() { using namespace CEGUI; SchemeManager::getSingleton().create("TaharezLook.scheme"); System::getSingleton().setDefaultMouseCursor("TaharezLook", "MouseArrow"); WindowManager& winMgr = WindowManager::getSingleton(); DefaultWindow* root = (DefaultWindow*)winMgr.createWindow("DefaultWindow", "Root"); System::getSingleton().setGUISheet(root); FrameWindow* wnd = (FrameWindow*)winMgr.createWindow("TaharezLook/FrameWindow", "Demo Window"); root->addChildWindow(wnd); wnd->setPosition(UVector2(cegui_reldim(0.25f), cegui_reldim( 0.25f))); wnd->setSize(UVector2(cegui_reldim(0.5f), cegui_reldim( 0.5f))); wnd->setMaxSize(UVector2(cegui_reldim(1.0f), cegui_reldim( 1.0f))); wnd->setMinSize(UVector2(cegui_reldim(0.1f), cegui_reldim( 0.1f))); wnd->setText("Hello World!"); return true; } void Hello::cleanupSample() { } 经过代码复制,代码准备阶段完成。
3.进行相关的各种设置,简单的设置,却是浪费了我好久时间。
右键自己建立的项目,选择属性--“配置属性”,然后从上往下进行设置。
3.1在“常规”中的设置选择默认设置,也可以更改一下输出目录到你自己解压的CEGUI目录下的bin文件夹下,这样可以省略复制dll文件的步骤。
3.2在C/C++目录下的设置
3.2.1 在“常规”中设置“附加包含目录”将CEGUI-0.7.5文件里你所有能找到的叫include的文件夹都加上。如下图。3.2.2对“预处理器”设置“预处理器定义”进行如下图设置预处理器定义设置的内容:_CRT_SECURE_NO_DEPRECATE HAVE_CONFIG_H _DEBUG经过上述步骤C/C++目录下的设置完毕。
3.3对“配置属性”中的“连接器”目录下的相关属性进行设置
3.3.1对“常规”目录中的“附加库目录”选项进行设置将CEGUI-0.7.5文件夹中你所有能见到的叫lib的文件都导入。也要导入DirectxSDK文件夹中的Lib文件夹。(我是新手,在还没弄懂每个文件夹的作用时就采取宁滥勿缺的方式,不要笑话我)。主要依赖库如下图:3.3.2对“输入”目录下的“附加依赖项”进行设置。这个地方废话多嘴一句,原来的例子中由于其自己的目录结构,它采取了使用相对路径进行“相关依赖性设置”,我们自己建立的项目位置是我们自己说了算的,该项目的位置若不是和例子的位置相同采取相对路径就悲催了,所以我使用了绝对路径进行设置。这个相对依赖项就是找到CEGUI-0.7.5文件夹下的lib文件,复制路径。我的做如下设置:D:\CeguiStudy\CEGUI-0.7.5\lib\CEGUISampleHelper_d.lib D:\CeguiStudy\CEGUI-0.7.5\lib\CEGUIBase_d.lib3.3.3对“系统”目录下的“子系统”进行设置选择“控制(/SUBSYSTEM:CONSOLE)的”
经过上述所有设置,你就去运行了。额,发现编译没有错误,链接没有错误。突然觉得貌似也没那么麻烦。然后启动新实例。发现各种各样的dll文件找不到。然后我继续采用宁滥勿缺的方式,去把CEGUI-0.7.5\bin目录中的所有.dll文件复制到自己建立的项目文件夹里面。再运行,发现还是不行,再把CEGUI-0.7.5中的datafiles文件夹复制到项目文件夹所属的文件夹下面,和项目文件夹属于同一级。这样应该没什么问题了。
该篇水文主要记录如何在例子的框架下建立一个可以运行的已有示例的基本过程及相关设置。在该过程中的相关各种错误将总结在另一篇文章中。