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环境搭建

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

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

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

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配置

1)、解压CEGUI-0.7.5至自己的路径

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

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

 

2)、设置环境变量

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

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)、解压“CEGUI-DEPS-0.7.x-r3-vc10.zip”文件

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

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

 

           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,但是最好是分别把两种都生成完,以后直接用。

           1)、打开项目

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

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

           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  编译生成。

5、  测试CEGUISamples

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

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

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

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

1)、打开“CEGUISamples.sln

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

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;)”

 

                   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给我,我尽我最大努力帮助解决问题。呵呵

 [email protected]

你可能感兴趣的:(exception,Microsoft,include,resources,dependencies,2010)