CEGUI完全使用手册.docx

上传人:b****3 文档编号:10792783 上传时间:2023-05-27 格式:DOCX 页数:73 大小:1.67MB
下载 相关 举报
CEGUI完全使用手册.docx_第1页
第1页 / 共73页
CEGUI完全使用手册.docx_第2页
第2页 / 共73页
CEGUI完全使用手册.docx_第3页
第3页 / 共73页
CEGUI完全使用手册.docx_第4页
第4页 / 共73页
CEGUI完全使用手册.docx_第5页
第5页 / 共73页
CEGUI完全使用手册.docx_第6页
第6页 / 共73页
CEGUI完全使用手册.docx_第7页
第7页 / 共73页
CEGUI完全使用手册.docx_第8页
第8页 / 共73页
CEGUI完全使用手册.docx_第9页
第9页 / 共73页
CEGUI完全使用手册.docx_第10页
第10页 / 共73页
CEGUI完全使用手册.docx_第11页
第11页 / 共73页
CEGUI完全使用手册.docx_第12页
第12页 / 共73页
CEGUI完全使用手册.docx_第13页
第13页 / 共73页
CEGUI完全使用手册.docx_第14页
第14页 / 共73页
CEGUI完全使用手册.docx_第15页
第15页 / 共73页
CEGUI完全使用手册.docx_第16页
第16页 / 共73页
CEGUI完全使用手册.docx_第17页
第17页 / 共73页
CEGUI完全使用手册.docx_第18页
第18页 / 共73页
CEGUI完全使用手册.docx_第19页
第19页 / 共73页
CEGUI完全使用手册.docx_第20页
第20页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

CEGUI完全使用手册.docx

《CEGUI完全使用手册.docx》由会员分享,可在线阅读,更多相关《CEGUI完全使用手册.docx(73页珍藏版)》请在冰点文库上搜索。

CEGUI完全使用手册.docx

CEGUI完全使用手册

使用CEGUI步骤:

初始化CEGUI(Renderer,system)

加载文件(scheme,font,mousecursor)

创建CEGUI窗口

注入输入事件,添加事件处理函数

渲染CEGUI(ogre自动渲染)

程序框架:

CEGUIBaseApp.h:

初始化CEGUI

CEGUIDemo.h:

创建CEGUI窗口

CEGUIFrameListener.h:

监听器

CEGUImain.cpp:

创建要显示的窗口

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

CEGUIBaseApp.h

葛娟

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

#ifndef_CEGUIBaseApp_h_

#define_CEGUIBaseApp_h_

///包含头文件

#include

#include

#include

#include"CEGUIFrameListener.h"

#include"CEGUIDemo.h"

 

///前向声明

classCEGUIDemo;

classCEGUIFrameListener;

classCEGUIBaseApp

{

public:

CEGUIBaseApp();

virtual~CEGUIBaseApp();

//初始化实例并进行渲染

virtualboolexecute(CEGUIDemo*sampleApp);

virtualvoidcleanup();

virtualvoidsetQuitting(boolquit=true){d_quitting=quit;}

virtualboolisQuitting()const{returnd_quitting;}

protected:

boold_quitting;//程序是否退出

boold_initialised;//是否已经初始化

Ogre:

:

Root*d_ogreRoot;

Ogre:

:

Camera*d_camera;

Ogre:

:

RenderWindow*d_window;

CEGUI:

:

OgreCEGUIRenderer*d_renderer;

CEGUIFrameListener*d_frameListener;

/*------------------------------------------------------------------

增加资源组及路径

--------------------------------------------------------------------*/

voidinitialiseResources(void);

};

#endif//endofguard_CEGUIBaseApp_h_

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

CEGUIBaseApp.cpp

葛娟

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

#include"CEGUIBaseApp.h"

//---------------------------------------------------------------------------------------------------------------

voidCEGUIBaseApp:

:

initialiseResources(void)

{

usingnamespaceOgre;

ResourceGroupManager&rgm=ResourceGroupManager:

:

getSingleton();

//创建资源组

rgm.createResourceGroup("imagesets");

rgm.createResourceGroup("fonts");

rgm.createResourceGroup("layouts");

rgm.createResourceGroup("schemes");

rgm.createResourceGroup("looknfeels");

ResourceGroupManager:

:

getSingleton().addResourceLocation("ceguifiles/fonts","FileSystem","fonts");

ResourceGroupManager:

:

getSingleton().addResourceLocation("ceguifiles/imagesets","FileSystem","imagesets");

ResourceGroupManager:

:

getSingleton().addResourceLocation("ceguifiles/layouts","FileSystem","layouts");

ResourceGroupManager:

:

getSingleton().addResourceLocation("ceguifiles/looknfeel","FileSystem","looknfeels");

ResourceGroupManager:

:

getSingleton().addResourceLocation("ceguifiles/schemes","FileSystem","schemes");

ResourceGroupManager:

:

getSingleton().addResourceLocation("ceguifiles/configs","FileSystem");

ResourceGroupManager:

:

getSingleton().addResourceLocation("ceguifiles/lua_scripts","FileSystem");

}

//--------------------------------------------------------------------------------------------------------------------------

CEGUIBaseApp:

:

CEGUIBaseApp():

d_quitting(false),

d_ogreRoot(0),

d_renderer(0),

d_initialised(false),

d_frameListener(0)

{

usingnamespaceOgre;

d_ogreRoot=newRoot();//创建根

initialiseResources();

if(d_ogreRoot->showConfigDialog())

{

d_window=d_ogreRoot->initialise(true,"GeJuan");//初始化渲染系统,返回自动创建的窗口

SceneManager*sm=d_ogreRoot->createSceneManager(ST_GENERIC,"SampleSceneMgr");//创建场景管理器

d_camera=sm->createCamera("SampleCam");//创建摄像机

d_camera->setPosition(Vector3(0,0,500));

d_camera->lookAt(Vector3(0,0,-300));

d_camera->setNearClipDistance(5);

Viewport*vp=d_window->addViewport(d_camera);//创建占据整个窗口的视口

vp->setBackgroundColour(ColourValue(0,0,0));

d_camera->setAspectRatio(Real(vp->getActualWidth())/Real(vp->getActualHeight()));

ResourceGroupManager:

:

getSingleton().initialiseAllResourceGroups();//初始化资源组

//CEGUI的初始化///////////////////////////////////////////////////////////////////////////////////

d_renderer=newCEGUI:

:

OgreCEGUIRenderer(d_window,RENDER_QUEUE_OVERLAY,false,0,sm);//初始化GUI

newCEGUI:

:

System(d_renderer);

CEGUI:

:

Imageset:

:

setDefaultResourceGroup("imagesets");

CEGUI:

:

Font:

:

setDefaultResourceGroup("fonts");

CEGUI:

:

Scheme:

:

setDefaultResourceGroup("schemes");

CEGUI:

:

WidgetLookManager:

:

setDefaultResourceGroup("looknfeels");

CEGUI:

:

WindowManager:

:

setDefaultResourceGroup("layouts");

CEGUI:

:

ScriptModule:

:

setDefaultResourceGroup("lua_scripts");

//创建帧监听器

d_frameListener=newCEGUIFrameListener(this,d_window,d_camera);

d_ogreRoot->addFrameListener(d_frameListener);

d_initialised=true;

}

else

{

deleted_ogreRoot;

d_ogreRoot=0;

}

}

//--------------------------------------------------------------------------------------------------------

CEGUIBaseApp:

:

~CEGUIBaseApp()

{

deleted_frameListener;

deleteCEGUI:

:

System:

:

getSingletonPtr();

deleted_renderer;

deleted_ogreRoot;

}

//--------------------------------------------------------------------------------------------------------------

boolCEGUIBaseApp:

:

execute(CEGUIDemo*sampleApp)

{

if(d_ogreRoot&&d_initialised)

{

sampleApp->initialiseSample();

//通过Ogre3D渲染

try

{

d_ogreRoot->startRendering();

}

catch(Ogre:

:

Exception&)

{

returnfalse;

}

catch(CEGUI:

:

Exception&)

{

returnfalse;

}

returntrue;

}

else

{

returnfalse;

}

}

//-----------------------------------------------------------------------------------------------------

voidCEGUIBaseApp:

:

cleanup()

{

}

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

    CEGUIFrameListener.h

    葛娟

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

#ifndef_CEGUIFrameListener_h_

#define_CEGUIFrameListener_h_

#include

#include

#include"CEGUIBaseApp.h"

classCEGUIBaseApp;

classCEGUIFrameListener:

publicOgre:

:

FrameListener,publicOgre:

:

WindowEventListener,publicOIS:

:

MouseListener,publicOIS:

:

KeyListener

{

public:

CEGUIFrameListener(CEGUIBaseApp*baseApp,Ogre:

:

RenderWindow*win,Ogre:

:

Camera*cam,booluseBufferedInputKeys=true,booluseBufferedInputMouse=true);

~CEGUIFrameListener();

boolframeStarted(constOgre:

:

FrameEvent&evt);

boolframeEnded(constOgre:

:

FrameEvent&evt);

virtualvoidwindowResized(Ogre:

:

RenderWindow*rw);

virtualvoidwindowClosed(Ogre:

:

RenderWindow*rw);

boolmouseMoved(constOIS:

:

MouseEvent&arg);

boolmousePressed(constOIS:

:

MouseEvent&arg,OIS:

:

MouseButtonIDid);

boolmouseReleased(constOIS:

:

MouseEvent&arg,OIS:

:

MouseButtonIDid);

boolkeyPressed(constOIS:

:

KeyEvent&arg);

boolkeyReleased(constOIS:

:

KeyEvent&arg);

protected:

boold_quit;

Ogre:

:

Overlay*d_statsOverlay;

Ogre:

:

Camera*d_camera;

Ogre:

:

RenderWindow*d_window;

CEGUIBaseApp*d_baseApp;

OIS:

:

InputManager*mInputManager;

OIS:

:

Mouse*mMouse;

OIS:

:

Keyboard*mKeyboard;

CEGUI:

:

MouseButtonconvertButton(OIS:

:

MouseButtonIDbuttonID);

};

#endif//endofguard_CEGUIFrameListener_h_

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

    CEGUIFrameListener.cpp

  葛娟

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

#include"CEGUIFrameListener.h"

//---------------------------------------------------------------------------------------------

CEGUIFrameListener:

:

CEGUIFrameListener(CEGUIBaseApp*baseApp,Ogre:

:

RenderWindow*win,Ogre:

:

Camera*cam,booluseBufferedInputKeys,booluseBufferedInputMouse):

d_baseApp(baseApp),

d_window(win),

d_camera(cam),

d_quit(false)

{

usingnamespaceOIS;

d_statsOverlay=Ogre:

:

OverlayManager:

:

getSingleton().getByName("gj/gjdefine");

if(d_statsOverlay)

d_statsOverlay->show();

ParamListpl;

size_twindowHnd=0;

std:

:

ostringstreamwindowHndStr;

win->getCustomAttribute("WINDOW",&windowHnd);

windowHndStr<

pl.insert(std:

:

make_pair(std:

:

string("WINDOW"),windowHndStr.str()));

pl.insert(std:

:

make_pair(std:

:

string("w32_mouse"),std:

:

string("DISCL_FOREGROUND")));

pl.insert(std:

:

make_pair(std:

:

string("w32_mouse"),std:

:

string("DISCL_NONEXCLUSIVE")));

mInputManager=InputManager:

:

createInputSystem(pl);

mKeyboard=static_cast(mInputManager->createInputObject(OISKeyboard,useBufferedInputKeys));

mMouse=static_cast(mInputManager->createInputObject(OISMouse,useBufferedInputMouse));

windowResized(d_window);

Ogre:

:

WindowEventUtilities:

:

addWindowEventListener(d_window,this);

mMouse->setEventCallback(this);

mKeyboard->setEventCallback(this);

}

voidCEGUIFrameListener:

:

windowResized(Ogre:

:

RenderWindow*rw)

{

unsignedintwidth,height,depth;

intleft,top;

rw->getMetrics(width,height,depth,left,top);

constOIS:

:

MouseState&ms=mMouse->getMouseState();

ms.width=width;

ms.height=height;

}

//---------------------------------------------------------------------------------------------

CEGUIFrameListener:

:

~CEGUIFrameListener()

{

Ogre:

:

WindowEventUtilities:

:

removeWindowEventListener(d_window,this);

windowClosed(d_window);

}

voidCEGUIFrameListener:

:

windowClosed(Ogre:

:

RenderWindow*rw)

{

if(rw==d_window)

{

if(mInputManager)

{

mInputManager->destroyInputObject(mMouse);

mInputManager->destroyInputObject(mKeyboard);

OIS:

:

InputManager:

:

destroyInputSystem(mInputManager);

mInputManager=0;

}

}

}

//----------------------------------------------------------------------------------

boolCEGUIFrameListener:

:

frameStarted(constOgre:

:

FrameEvent&evt)

{

usingnamespaceOIS;

d_quit=d_baseApp->isQuitting();

mKeyboard->capture();

mMouse->capture();

//没有处理立即模式的输入

return(!

d_quit&&!

mKeyboard->isKeyDown(OIS:

:

KC_ESCAPE)&&!

d_window->isClosed());

}

//-------------------------------------------------------------------------------

boolCEGUIFrameListener:

:

frameEnded(constOgre:

:

FrameEvent&evt)

{

//可以在这里更新状态

returntrue;

}

//---------------------------------------

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2