CEGUI教程 - 图文(6)

2020-02-21 13:43

mGUIRenderer = 0; } }

下面是你可以设置任意Ogre场景的地方,使用你在前五章教程学到的方法。在这个Ogre场景中,你仍要为其添加一个独立的相机(camera)和视窗(viewport)。 protected:

void createScene(void) {

// Set ambient light

mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5)); 下面是创建CEGUI日志的地方,一般都设置为Informative模式的。其具有四种模式:Standard, Errors, Informative 和 Insane。 // Set up GUI system

mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, mSceneMgr); mGUISystem = new CEGUI::System(mGUIRenderer);

CEGUI::Logger::getSingleton().setLoggingLevel(CEGUI::Informative);

创建一个新的CEGUI系统,使用“TaharezLook”来设置图(sheme)与鼠标指针,使用“BlueHighway-12”来设置字体。

CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)\

mGUISystem->setDefaultMouseCursor((CEGUI::utf8*)\zLook\

CEGUI::MouseCursor::getSingleton().setImage(\\

mGUISystem->setDefaultFont((CEGUI::utf8*)\2\

mEditorGuiSheet=CEGUI::WindowManager::getSingleton().createWindow((CEGUI::utf8*)\

(CEGUI::utf8*)\ mGUISystem->setGUISheet(mEditorGuiSheet); }

调用自定义的帧监听器,这样我们可以在需要时访问“mGUIRender”。 void createFrameListener(void) {

mFrameListener = new GuiFrameListener(mWindow, mCamera, mGUIRenderer);

mRoot->addFrameListener(mFrameListener); } };

下面是主函数也是程序的主循环,在本教程并不需要你修改这段代码。

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 #define WIN32_LEAN_AND_MEAN #include \

INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT ) #else

int main(int argc, char **argv) #endif {

// Create application object TutorialApplication app; try { app.go();

} catch( Exception& e ) {

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32

MessageBox( NULL, e.getFullDescription().c_str(), \exception has occured!\MB_TASKMODAL); #else

fprintf(stderr, \occured: %s\\n\#endif

} return 0; }

完成后,编译程序能得到一个空的窗口。请关掉程序,继续我们的学习。注意:如果实际操作中出现问题,你可以在应用程序所在文件夹中找到“CEGUI.log”文件分析查找错误

CEGUI是如何工作的

本质上CEGUI是通过向窗口添加第二个场景,这个场景是在Ogre的基本渲染队列完成后才渲染的。这个场景仅仅是由一系列3D矩形对象组成的。(也就是两个多边形沿着其边压制到一起)。渲染矩阵是为消除矩形的突兀与歪斜而根据他们的位置建立的。使用这些矩形,添加材质和响应就构成了用户界面(GUI)。一般情况下这是很不错的,因为一个3D的用户界面将会自动的缩放其元素来适应屏幕,并且使用硬件材质过滤。其将会比C++标准的2D用户界面更加快速和漂亮。

“So in one sentence: CEGUI renders a 2D gui using 3D methods and hardware so you don't have to.”——zeroskill 添加退出按钮

首先,我们需要为应用程序添加下面的头文件。本例中是“Push Button”

#include 我们要在场景底部添加退出按钮。 CEGUI::PushButton* quitButton =

(CEGUI::PushButton*)CEGUI::WindowManager::getSingleton().createWindow

(\(CEGUI::utf8*)\

mEditorGuiSheet->addChildWindow(quitButton); quitButton->setPosition(CEGUI::Point(0.35f, 0.45f)); quitButton->setSize(CEGUI::Size(0.3f, 0.1f)); quitButton->setText(\

完成后执行程序,一个漂亮的按钮将会出现在屏幕中。但请注意,程序此时仍然不做任何事情,因为我们并没有为其添加响应时间。

如果你编译时遇到了setPosition()和setSize()的调用错误:

'CEGUI::Window::setPosition' : cannot convert parameter 1 from 'CEGUI::Vector2' to 'const CEGUI::UVector2 &' 将setPosition()和setSize()所在行分别用下面的代码替换:

quitButton->setPosition(CEGUI::UVector2(cegui_reldim(0.35f), cegui_reldim( 0.45f)) );


CEGUI教程 - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:新人教版小学数学三年级上册分数的简单计算精品教案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: