VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作

一、环境搭建

1.软件准备

所需软件有OGREOgreSDK_vc10_v1-7-4

                   CEGUICEGUI-0.7.5.zip            CEGUI-DEPS-0.7.x-r3-vc10.zip

                   DirecxDXSDK_Jun10.exe

这四个软件开发包,均可在其相应的官网上进行下载。


2. OGRE环境搭建

2.1 将OgreSDK_vc10_v1-7-4解压至自己所需要的目录

如我的:D:\Software\OgreSDK_vc10_v1-7-4,如下图所示


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第1张图片


2.2 配置环境变量

           我用的是win7,(XP直接在“我的电脑”-〉属性-〉高级-〉环境设置)

添加“OGRE_HOME”,内容为上步路经。


             VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第2张图片       VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第3张图片


3.安装Direcx

WIN7下,我的安装路径为“C:\Program Files (x86)\Microsoft DirectXSDK (June 2010)”。

之后,检查环境变量里是否有“DXSDK_DIR


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第4张图片


如果没有添加即可


4.CEGUI配置

4.1 解压CEGUI-0.7.5至自己的路径

我的为“D:\Software\CEGUI-0.7.5


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第5张图片

 

4.2 设置环境变量


           VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第6张图片


4.3 修改CEGUIconfig参数

           在路径“D:\Software\CEGUI-0.7.5\projects\premake”下(以后都用我的路径了,自己根据自己的路径找到相应文件),找到“config.lua”,用文本打开,修改其中的参数。将下列红字参数后的改成自己相对应的。

OGRE_PATHS = {"D:\Software\OgreSDK_vc10_v1-7-4", "include/OGRE","lib" }

OIS_PATHS= { "D:\Software\OgreSDK_vc10_v1-7-4","include/OIS", "lib" }

OPENGL_RENDERER= true

DIRECT3D9_RENDERER= true

DIRECT3D10_RENDERER= false

DIRECT3D11_RENDERER= false

IRRLICHT_RENDERER= false

OGRE_RENDERER = true

NULL_RENDERER = false

SAMPLES_GL= true

SAMPLES_DX9= true

SAMPLES_DX10= false

SAMPLES_IRRLICHT= false

SAMPLES_OGRE = true

修改完成后保存。


4.4 解压“CEGUI-DEPS-0.7.x-r3-vc10.zip”文件


           4.4.1 解压此文件,将其中的“dependencies”拷贝到“D:\Software\CEGUI-0.7.5”中,如下图所示


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第7张图片

 

           4.4.2 将“dependencies\bin”文件下的DLL文件拷贝到“D:\Software\CEGUI-0.7.5\bin”中。


5. 打开Build

           还在上步路径下找到“build_vs2008.bat”及“build_samples_vs2008.bat”直接运行他们,确认运行正确的方法:可以在当前目录下看到“CEGUI.sln”及“CEGUISamples.sln”。如果你选用的是CEGUI-0.7.6可能无法生成“CEGUISamples.sln”,那就换回CEGUI-0.7.5吧。



6.编译CEGUIDebug

           在上一步后,CEGUI-0.7.5文件目录中的lib文件是空的。我们需要自己生成所需要的lib文件。

注:由于Debug生成的是“*_d.lib”而Release为“*.lib”,根据需要编译CEGUI,但是最好是分别把两种都生成完,以后直接用。

           6.1 打开项目

                    路径“D:\Software\CEGUI-0.7.5\projects\premake”下找到CEGUI.sln,打开

因为用的是VS2010 所以有一个升级过程,直接点下一步知道完成。

           6.2 配置项目属性

           进入“CEGUIOgreRenderer”属性页,如下图所示


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第8张图片


l  编辑“C/C++->“附加包含目录”,添加如下行

$(CEGUI_HOME)\Samples\common\include

$(CEGUI_HOME)\dependencies\include

$(CEGUI_HOME)\

$(CEGUI_HOME)\cegui\include

$(OGRE_HOME)\include

$(OGRE_HOME)\boost_1_47

$(OGRE_HOME)\include\OGRE


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第9张图片


l  “链接器->常规->附加库目录”

$(CEGUI_HOME)\lib

$(CEGUI_HOME)\dependencies\lib

$(OGRE_HOME)\boost_1_47\lib

$(OGRE_HOME)\lib\debug如果为Release模式则改为$(OGRE_HOME)\lib\release

l  编译生成。


7.测试CEGUISamples

首先,更改WIN7的用户权限,否则调试时出错,方法如下

“计算机->管理->本地用户和组”


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第10张图片


VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第11张图片


选择用户“Administrator”属性,将“账号已禁用”去掉勾选如上图所示。


7.1 打开“CEGUISamples.sln

在路径“D:\Software\CEGUI-0.7.5\projects\premake”下


7.2 以下配置的是“Debug”情况下的属性

l  “调试”:工作目录:“$(CEGUI_HOME)\bin

命令:$(TargetDir)\$(TargetName)_d.exe

(因为默认的命令只是调用*.exe但是为了区别DebugRelease版,生成的文件分别为*_d.exe*.exe,而我们要警醒Debug调试,所以要写为$(TargetName)_d.exe

l  C/C++”:附加包目录:“$(OGRE_HOME)\include;

$(OGRE_HOME)\boost_1_47;

$(OGRE_HOME)\include\OIS;

$(OGRE_HOME)\include\OGRE;

$(CEGUI_HOME)\;

l  “链接器”:附加库目录:“$(CEGUI_HOME)\lib;

$(CEGUI_HOME)\dependencies\lib;

$(OGRE_HOME)\boost_1_47\lib;

$(OGRE_HOME)\lib\debug;当为Release时为$(OGRE_HOME)\lib\release;)”

 

7.3 编译整个方案,中间有错误,一般是没有相应的DLL文件,

如:缺少“OIS_d.dllOgreMain_d.dll”可到“D:\Software\OgreSDK_vc10_v1-7-4\bin\”文件下找到

如有问题发邮件[email protected](非诚勿扰)。

到此,CEGUI配置完成。下面开始将OGRE与其进行结合。


二、OGRECEGUI结合

上面的状态必须都通过才能进行此步。

OGRECEGUI能单独运行

1.添加代码,测试代码如下所示。

其实现的效果只是在OGRE界面中添加了一个鼠标跟一个窗口(“Quit”)。

鼠标未添加移动效果。

#include "ExampleApplication.h"
//...........................needadd
#include <CEGUI.h>
#include <CEGUIImage.h>
#include <CEGUISystem.h>
#include <CEGUILogger.h>
#include <CEGUISchemeManager.h>
#include <CEGUIWindow.h>
#include <CEGUIWindowManager.h>
#include <elements/CEGUIPushButton.h>
#include <RendererModules/Ogre/CEGUIOgreRenderer.h>
#include <RendererModules/Ogre/CEGUIOgreResourceProvider.h>
#include <RendererModules/Ogre/CEGUIOgreGeometryBuffer.h>
//..............needadd
CEGUI::MouseButtonconvertOgreButtonToCegui(int buttonID)
{
using namespace OIS;
using namespace CEGUI;
switch (buttonID)
{
case OIS::MB_Left:
     returnCEGUI::LeftButton;
case OIS::MB_Right:
     returnCEGUI::RightButton;
case OIS::MB_Middle:
     returnCEGUI::MiddleButton;
default:
     returnCEGUI::LeftButton;
}
}
//RunFrameListener
class RunFrameListener : publicExampleFrameListener{
public:
     RunFrameListener(RenderWindow* win, Camera*cam, CEGUI::Renderer* renderer)
         : ExampleFrameListener(win, cam, false, false)
     {
         mGUIRenderer = renderer;
     }
private:
     CEGUI::Renderer* mGUIRenderer;
};
 
class RunApplication : publicExampleApplication
{
public:
     CEGUI::OgreRenderer* mogreRenderer;
     CEGUI::Window* mEditorGUISheet;
     RunApplication() :mogreRenderer(0),mEditorGUISheet(0)
     {}
     voidcreateCamera()
     {
         mCamera = mSceneMgr->createCamera("PlayerCam");
         mCamera->setNearClipDistance(5);
     }
     voidcreateScene()
     {
         mogreRenderer =&CEGUI::OgreRenderer::bootstrapSystem();
         CEGUI::Logger::getSingleton().setLoggingLevel(CEGUI::Informative);
         CEGUI::SchemeManager::getSingleton().create("TaharezLook.scheme");
         CEGUI::System::getSingleton().setDefaultMouseCursor("TaharezLook","MouseArrow");
         CEGUI::MouseCursor::getSingleton().setImage("TaharezLook","MouseMoveCursor");
         mEditorGUISheet =CEGUI::WindowManager::getSingleton().createWindow("DefaultWindow","Root");
         CEGUI::System::getSingleton().setGUISheet(mEditorGUISheet);
         CEGUI::FrameWindow* fwnd =(CEGUI::FrameWindow*)CEGUI::WindowManager::getSingleton().createWindow("TaharezLook/FrameWindow","Demo Window");
         mEditorGUISheet->addChildWindow(fwnd);
         fwnd->setPosition(CEGUI::UVector2(cegui_reldim(0.35f),cegui_reldim(0.45f)));
         fwnd->setSize(CEGUI::UVector2(cegui_reldim(0.35f),cegui_reldim(0.1f)));
         fwnd->setText("QUIT");
     }
     voidcreateFrameListener()
     {
mFrameListener = newRunFrameListener(mWindow,mCamera,mogreRenderer);
         mRoot->addFrameListener(mFrameListener); }
};
 
#if OGRE_PLATFORM ==OGRE_PLATFORM_WIN32
#defineWIN32_LEAN_AND_MEAN
#include"windows.h"
 
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
#else
int main(int argc,char **argv)
#endif
{// Createapplication object
     RunApplication app;
     try {
         app.go();
     } catch( Exception& e ) {
#if OGRE_PLATFORM ==OGRE_PLATFORM_WIN32
         MessageBoxA( NULL,e.getFullDescription().c_str(), "An exception has occurred!", MB_OK |MB_ICONERROR | MB_TASKMODAL);
#else
         fprintf(stderr, "An exception hasoccurred: %s ",
              e.getFullDescription().c_str());
#endif
     }
     return 0;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////

2. 开始配置项目属性(Debug)(Release的话可以仿照进行相应更改)


         VS2010 + WIN7x64:Ogre1.7.x 与CEGUI0.7.x的环境搭建及具体事例操作_第12张图片


l  “调试”:命令:$(OGRE_HOME)\bin\debug\$(TargetFileName)

工作目录:$(OGRE_HOME)\bin\debug

l  C\C++”:附加包含目录:$(CEGUI_HOME)\Samples\common\include;

$(CEGUI_HOME)\dependencies\include;

$(CEGUI_HOME)\;$(CEGUI_HOME)\cegui\include;

$(OGRE_HOME)\include;$(OGRE_HOME)\boost_1_47;

$(OGRE_HOME)\include\OIS;$(OGRE_HOME)\include\OGRE;


l  “链接器”:输出文件:$(Ogre_Home)\bin\debug\$(TargetName)$(TargetExt)

附加库目录:$(CEGUI_HOME)\lib;

$(CEGUI_HOME)\dependencies\lib;

$(OGRE_HOME)\boost_1_47\lib;

$(OGRE_HOME)\lib\debug;

$(OGRE_HOME)\lib\release;


 输入:附加依赖项:OgreMain_d.lib;

OIS_d.lib;

CEGUIBase_d.lib;

CEGUIOgreRenderer_d.lib;


系统:子系统:窗口 (/SUBSYSTEM:WINDOWS)


3.到此一般不会调试成功,因为还需要一些文件的更改

l  将文件“D:\Software\CEGUI-0.7.5\bin”中的所有文件,拷贝到“D:\Software\OgreSDK_vc10_v1-7-4\bin\debug”文件下。其实不用全部拷,只是我懒得一个个比对了。

l  最后:配置“resources_d.cfg”中的资源,因为要调用datafiles中的资源,因此需要配置资源路径,以找到datafiles中的资源。

将datafiles的文件路径拷过来(根据自己的文件位置进行添加)。

如我的:添加如下到resources_d.cfg

FileSystem=../../datafiles/animations

FileSystem=../../datafiles/configs

FileSystem=../../datafiles/fonts

FileSystem=../../datafiles/imagesets

FileSystem=../../datafiles/layouts

FileSystem=../../datafiles/looknfeel

FileSystem=../../datafiles/lua_scripts

FileSystem=../../datafiles/schemes

FileSystem=../../datafiles/xml_schemas


三、结束。

以上就是我配置OGRE+CEGUI+VS2010+WIN7x64,网上虽然有很多类似教程,但是大多都是较低版本,虽然有些乱但是最终成功了,所以啊,不要选太高的版本,否则总会出这样或那样的问题。如果大家有比较好的简单的方法,或者疑问,可以发Email给我,我尽我最大努力帮助解决问题。呵呵


原文链接: http://blog.csdn.net/swazer_z/article/details/7566900

你可能感兴趣的:(OGRE)