OGRE初级教程总结

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

 

     OGRE基础教程1

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

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

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

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

4  OGRE中的EntitySceneNode都必须指定全局唯一的名称。

 

OGRE基础教程2

主要是讲OGRE中的LightShadow的设置

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

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

 

OGRE基础教程3

主要讲Terrain场景,SkyFog

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()

此教程的TutorialFrameListenerExampleFrameListener派生,后者又从FrameListenerKeyListener派生,所以它可以处理按键事件。

 

OGRE基础教程5

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

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

eg:

ExampleFrameListener的构造函数里已经取得了OISmMousemKeyboard对象。我们调用这些输入对象的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应用程序(当然也支持纯DirectXOpenGL)。就像Ogre只是一个图像库一样(不做声音、物理等其它的事情),CEGUI只是一个GUI库,意味着既不自己做渲染,也不与任何鼠标键盘事件挂钩。实际上,为了让CEGUI能渲染,你必须提供一个渲染器给它(包含在SDKOgreGUIRenderer库)。而为了让它能够理解鼠标键盘事件,你必须手工地把它们注入系统。

2初始化 CEGUIcreateScene函数并添加如下代码:

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转变和注入鼠标事件
当我们注入KepUpKepDown事件到CEGUI里时,我们不必转换键码。OISCEGUI为键盘输入使用相同的键码。但鼠标按钮却不是这样。在按下鼠标按钮注入到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 的简单框架,有必要对它做一下了解。

 ExampleApplication类图

 

OGRE---旺

记于2009--12--3上午

 

 

 

 

 

OGRE(O-O Graphics Rendering Engine) 使用指南________________________________________________________________1 作者_________________________________________________________________________ 6 序____________________________________________________________________________7 教程的目的_________________________________________________________________ 7 读者要求___________________________________________________________________ 7 教程的由来_________________________________________________________________ 7 OGRE简介___________________________________________________________________ 8 OGRE特点_________________________________________________________________ 8 效率特性__________________________________________________________________8 平台和3D API 支持________________________________________________________ 8 网格Meshes_______________________________________________________________ 8 场景特性__________________________________________________________________9 特效______________________________________________________________________9 其它特性__________________________________________________________________9 OGRE中的模块_____________________________________________________________ 9 OgreMain 模块____________________________________________________________ 10 SDL 平台管理模块________________________________________________________ 11 Win32 平台管理模块_______________________________________________________11 BSP 场景管理_____________________________________________________________11 文件系统插件_____________________________________________________________11 GuiElement 插件__________________________________________________________ 11 OctreeSceneManager 插件___________________________________________________ 11 ParticleFX 插件___________________________________________________________ 12 Direct3D7 渲染系统插件____________________________________________________12 Direct3D8 渲染系统插件____________________________________________________12 SDL 渲染系统插件________________________________________________________ 12 3ds2oof 工具______________________________________________________________12 3Dstudio Max 导出器_______________________________________________________12 位图字体创建工具_________________________________________________________12 Milkshape3D 导出器_______________________________________________________ 12 Python 接口______________________________________________________________ 13 XML 转换器______________________________________________________________13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值