您的位置:首页 > 其它

OGRE初级教程总结

2015-10-18 16:16 218 查看
一下内容是对OGRE基础教程的总结,大家可以先阅读初级教程1—9的内容,然后再回过头来浏览这片文章,否则可能会有很多看不懂的地方。

OGRE基础教程1


主要讲了几个OGRE中的基本概念:

1. SceneManager:所有屏幕上可见的东西都由SceneManager来管理;有多种类型的SceneManager,分别用来渲染Terrain、BSP等等。

2. Entity:初步的理解一个Entity代表一个Mesh(可以含有动画),Light,Camera,Particle,Billboard不用Entity表示。Entity不能直接加到场景中,必须先attach到一个SceneNode上,SceneNode管理位置和方向。

3. SceneNode:SceneNode管理位置和方向;需要注意子节点的是在父节点的空间中;一个SceneNode可以管理多个对象。

4. OGRE中的Entity和SceneNode都必须指定全局唯一的名称。

OGRE基础教程2

主要是讲OGRE中的Light和Shadow的设置

1. 要开启阴影:首先要调用SceneManager:: setShadowTechnique(),然后对于需要开启的Entity调用Entity:: setCastShadows()。

2. 灯光和摄像机都需要由SceneManager来创建,分别是SceneManager::createLight()和SceneManager::createCamera()。

OGRE基础教程3

主要讲Terrain场景,Sky和Fog

1. 为了处理Terrain场景,首先要选择相应类型的SceneManager,这里选择了“ST_EXTERIOR_CLOSE”类型。这个操作是通过Root::createSceneManager()完成的。此操作创建并返回了一个TerrainSceneManager指针,同时创建了一个HeightmapTerrainPageSource对象。

2. 加载地形是通过:mSceneMgr->setWorldGeometry( “terrain.cfg” );语句来完成的。

3. 天空是通过SceneManager::setSkyBox()等函数完成的;

4. Fog是通过SceneManager::setFog()完成。

OGRE基础教程4

引入了FrameListener的概念

对于FrameListener的初步理解:OGRE在初始化完成之后,调用Root::startRendering()就启动了渲染循环。FrameListener是为了给应用程序处理各种事件的机会,最典型的就是frameStarted()和frameEnded()。

此教程的TutorialFrameListener从ExampleFrameListener派生,后者又从FrameListener和KeyListener派生,所以它可以处理按键事件。

OGRE基础教程5

主要介绍键盘监听和鼠标监听的使用方法。

OIS的KeyListener接口提供了两个纯虚函数。第一个是keyPressed函数(每次按下某个键时调用它),还一个是keyReleased(每次离开某个键时调用它)。传入这些函数的参数是一个KeyEvent,它包含被按下/释放的按键的键码。

eg:

在ExampleFrameListener的构造函数里已经取得了OIS的mMouse和mKeyboard对象。我们调用这些输入对象的setEventCallback方法,把TutorialFrameListener注册成一个监听器。

mMouse->setEventCallback(this);

mKeyboard->setEventCallback(this);

然后再处理鼠标键盘的响应响应时间包括keyPressed(),KeyDown(),MovePressed(),MoveDown().

bool keyPressed(const OIS::KeyEvent &e) { switch (e.key) { case OIS::KC_ESCAPE: mContinue = false; break; } return true; }

OGRE基础教程6

CEGUI简介:

1. Crazy Eddies GUI系统是一个为不具备或缺乏用户界面制作功能的图形API或引擎提供免费用户界面支持的开源的库。这个使用c++编写的库是针对那些想制作优秀的游戏却又没有GUI(图形用户界面)子系统的专业游戏开发者。确信已经在debug配置的中添加 2

2. ‘CEGUIBase_d.lib’ 和 ‘OgreGUIRenderer_d.lib’ 库。在Visual C++中添加依赖,依次点击:项目 -> 属性 -> 配置属性 -> 链接。

3. CEGUI日志的地方,一般都设置为Informative模式的。其具有四种模式:Standard, Errors, Informative 和 Instane。

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

CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)”TaharezLookSkin.scheme”);

mGUISystem->setDefaultMouseCursor((CEGUI::utf8*)”TaharezLook”,(CEGUI::utf8*)”MouseArrow”);

CEGUI::MouseCursor::getSingleton().setImage(“TaharezLook”,”MouseMoveCursor”);

mGUISystem->setDefaultFont((CEGUI::utf8*)”BlueHighway-12”);

mEditorGuiSheet=CEGUI::WindowManager::getSingleton().createWindow((CEGUI::utf8*)”DefaultWindow”,

(CEGUI::utf8*)”Sheet”);

mGUISystem->setGUISheet(mEditorGuiSheet);

OGRE基础教程7

1 CEGUI是一个功能全面的GUI库,它能够植入像Ogre这样的3D应用程序(当然也支持纯DirectX和OpenGL)。就像Ogre只是一个图像库一样(不做声音、物理等其它的事情),CEGUI只是一个GUI库,意味着既不自己做渲染,也不与任何鼠标键盘事件挂钩。实际上,为了让CEGUI能渲染,你必须提供一个渲染器给它(包含在SDK的OgreGUIRenderer库)。而为了让它能够理解鼠标键盘事件,你必须手工地把它们注入系统。

2初始化 CEGUI,createScene函数并添加如下代码:

mRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, mSceneMgr); mSystem = new CEGUI::System(mRenderer);3选择了一个皮肤:

CEGUI::SchemeManager::getSingleton().loadScheme((CEGUI::utf8*)”TaharezLookSkin.scheme”);

4接下来我们要做的事件就是设置默认鼠标指针图像和默认字体:

mSystem->setDefaultMouseCursor((CEGUI::utf8*)”TaharezLook”, (CEGUI::utf8*)”MouseArrow”);

mSystem->setDefaultFont((CEGUI::utf8*)”BlueHighway-12”);

5注入键盘事件

CEGUI不会自己处理输入,它不读取鼠标的移动和键盘的输入。相反地,它依赖用户把按键鼠标事件注入到系统。接下来我们要做的就是处理这些事件。若你正使用CEGUI,你需要以缓冲模式运行鼠标键盘,这样你就能直接获取事件并在它们发生时注入。找到keyPressed函数,并添加代码:

CEGUI::System *sys = CEGUI::System::getSingletonPtr();

sys->injectKeyDown(arg.key);

6转变和注入鼠标事件当我们注入KepUp和KepDown事件到CEGUI里时,我们不必转换键码。OIS和CEGUI为键盘输入使用相同的键码。但鼠标按钮却不是这样。在按下鼠标按钮注入到CEGUI时,我们需要写一个函数来把OIS的按钮ID转换为CEGUI的按钮ID。 7窗口、表单、组件介绍

CEGUI与其它多数GUI系统有所不同。在CEGUI里,所有能显示出来的东西都是CEGUI::Window类的一个子类,而且一个window可以有任意数量的子window。这样会导致一些奇怪的事情发生。你能在一个按钮里面放置另外一个按钮,虽然实际上不会这么干。我提这些的原因是,当你正寻找放在应用程序里的某个特殊的小部件时,它们都被称作Windows,而且可以通过访问Windows的函数来访问。

8事件

CEGUI里的事件是非常灵活的。它不是实现一个接收事件的接口,而是使用一种回调机制,把任何公共函数绑定成一个事件处理器(通过适当的方法签名)。不幸的是,这也意味着注册事件会比Ogre更麻烦。

OGRE基础教程8

始终牢记的视口类,虽然没有很多的功能本身,就是对所有食人魔渲染的关键。不要紧,你有多少SceneManagers创建或在每个场景管理器多少相机时,他们都将呈现给窗口,除非您设定每个摄像机你呈现口。也不要忘记清除你不使用的之前创造的视口!

OGRE基础教程8

从零开始

1开始之前,让我们站在更高的层次上看一下启动过程是如何工作的:

1. 创建Root对象。

2. 定义Ogre将要使用的资源。

3. 选择并设置渲染系统(即DirectX, OpenGL等)。

4. 创建渲染窗口(Ogre所处的窗口)。

5. 初始化你要使用的资源。

6. 用这些资源来建立一个场景。

7. 设置第三方库或插件。

8. 创建一些帧监听器。

9. 启动渲染循环

2带缓冲输入的疑难杂症

如果你没有如自己所希望那样在程序中获得输入缓冲,那么你需要检查以下这些事情:

1. 你在调用InputManager::createInputObject()函数创建输入设备时是否设置第二个参数(开启输入缓冲)为true?

2. 你是否为每个输入缓冲对象设置了一个setEventCallback()函数?

3. 是否有别的类调用了setEventCallback()函数?(注意:OIS仅仅允许一个事件回调给一个对象,你不能把一个事件回调给两个类处理.)

3清理

最后一件事是,当程序终止时,我们要对所创建的所有对象进行清理。为止,我们将按照与创建时相反的顺序来删除或销毁这些对象。

以上几个教程都使用“ogrenew/Samples/Common”目录下的ExampleApplication的简单框架,有必要对它做一下了解。

OGRE—旺

记于2009–12–3上午

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wangwang123654/archive/2009/12/03/4931967.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: