
OGRE
文章平均质量分 58
geeeeeeee
这个作者很懒,什么都没留下…
展开
-
OGRE 资源载入
OGRE例子中载入资源ExampleApplication:: setupResources利用ConfigFile导入resources.cfg然后通过ResourceGroupManager将配置文件中指定的资源组织成ResourceGroup,加入到其成员mResourceGroupMap中 void ResourceGroupManager::addRe原创 2009-01-12 15:58:00 · 1103 阅读 · 0 评论 -
OGRE中的设计模式
Ogre使用观察者(Observer)模式将自己的每一个状态变化通知给应用程序,客户代码通过注册来监听Ogre中事件和状态的改变来得到相应通知(例如演示程序中使用的FrameListener对象,可以监听到应用程序每一帧渲染的开始和结束事件)。单件模式(Singleton)用来保证一个类只有一个实例迭代器模式(Iterator)用来历遍一个数据结构中的所有数据。访问者模式(Visitor)可原创 2008-12-22 22:11:00 · 1136 阅读 · 0 评论 -
ETM 数据分析
class TerrainImpl //地图 { Ogre::SceneManager* mSceneMgr; //new ET::TerrainManager(mSceneMgr); Ogre::SceneNode* mTerrainNode; //Tile的父节点 节点名默认为"ETTerra原创 2008-12-17 15:28:00 · 1934 阅读 · 0 评论 -
OGRE摄像机
一个摄像机就像真实世界的模拟一样:它从一个特定的方向为你场景的每一帧“照相”(就是说它有一个位置点和一个方向)。它不是一个典型的可渲染的物体,所以即使你在场景中已经有了一个摄像机,这个摄像机也不会被渲染。摄像机既可以被连接到场景的节点上也可以存在于自由的空间中(which means you get to move them around manually if you want their原创 2008-12-06 11:24:00 · 3554 阅读 · 0 评论 -
Ogre中的内存泄露
刚开始使用Ogre时总是碰到内存泄露,而且往往是一泄千里,等半分钟才能打完日志,我想这和Ogre中的大量大对象很有关系。下面就来分析一下内存泄露的产生原因。1. MFC中使用Ogre时发生的内存泄露这个问题比较有意思,其实并没有发生泄露,而是MFC自作主张的认为发生了内存泄露,实际上内存并不是没有释放,而是在VC报内存泄露之后释放,先来看一看MFC报内存泄露时的调用堆栈:msvcr71转载 2008-12-05 23:00:00 · 1734 阅读 · 0 评论 -
Ogre中的批次渲染技术(Batching)
不管在什么引擎中渲染操作都是一个非常耗费系统资源的过程,一个物体要渲染到屏幕上就必须要经过一次渲染操作,假如场景中有几万棵相同的树,那么系统也会执行几万次的渲染操作,这样程序效率会非常慢,如果能将这些具有相同渲染状态的树,用一次渲染操作都画出来,那么效率就会提升好几倍。Ogre引擎所提供的Ogre::StaticGeometry类,就是实现批次渲染的操作。如果一些物体载入场景后就不打算在进行旋转载 2008-12-04 14:51:00 · 1527 阅读 · 0 评论 -
Ogre新加FrameListener.frameRenderingQueued分析
新版Ogre的帧监听器(FrameListener)新加了一个方法,frameRenderingQueued,查看例子后发现,原先的frameStarted基本都被这个方法所代替了,决定打开源代码看看Ogre的意图。 我们从renderOneFrame开始分析,这个方法只有三句话。Code highlighting produced by Actipro CodeHighlight转载 2008-12-03 16:24:00 · 1167 阅读 · 0 评论 -
OGRE的2D坐标、CEGUI坐标、鼠标坐标
屏幕坐标系:左上角为(0, 0)右下角为(1, 1)OGRE的2D坐标系:左上角为(-1, 1)右下角为(1, -1)CEGUI坐标系:左上角为(0, 0),单位像素 转换公式(鼠标坐标=>OGRE的2D坐标)void setCorners(float left, float top, float right, float bottom){ left = left原创 2008-12-03 22:06:00 · 2249 阅读 · 0 评论 -
Ogre定义的三种变换空间
Ogre定义了三种变换空间:TS_LOCAL, TS_PARENT, 和TS_WORLD当你对一个节点进行平移,或者是绕某个轴进行旋转,你都能指定使用哪一个“变换空间”来移动它。一般你移动一个对象时,不需要指定这个参数。平移translate默认是TS_PARENT,旋转默认的是TS_LOCAL,意思是这个对象使用的是父节点所在的变换空间。如果父节点是场景的根节点,那么当我们按下W键时(原创 2008-12-01 16:26:00 · 1182 阅读 · 0 评论 -
OGRE+OIS 帧监听FrameListener、非缓冲输入和缓冲输入
Ogre的主循环(Root::startRendering)类似这样: 1、Root object调用frameStarted方法在所有已经注册的FrameListeners中。 2、Root object渲染一帧。 3、Root object调用frameEnded方法在所有已经注册的FrameListeners中。 帧的注册方法mRoot->addFrameListe原创 2008-12-02 16:34:00 · 2818 阅读 · 3 评论 -
OGRE场景管理器
场景管理器不是单例,您想创建多少就创建多少。创建方法1、new SceneManager()2、Root的createSceneManager方法 一般都使用方法2为什么使用createSceneManager函数?原因是Ogre的插件系统,比如你使用了OctreeSceneManager插件的话,OctreeSceneManager会将自身注册为ST_GENERIC类原创 2008-11-29 20:49:00 · 1302 阅读 · 0 评论 -
半成品也纪念一下
折腾了半天,终于把MFC+OGRE+ETM+CEGUI整合起来了本来想加OIS的,结果OIS加载的代码有问题,手头上也没OIS相关教程,只好先去掉OIS了,可能跟MFC冲突==》句柄错误奇了怪了,FPS低得出奇 得找找原因==》加上定时刷屏即可,注意清除背景绘制,否则屏幕抖动剧烈OIS createInputObject 失败原因:OIS需要 根窗口的句柄来处理原创 2008-12-28 00:21:00 · 1950 阅读 · 4 评论