Ogre与MFC结合时的内存泄漏问题
摘要:第一步,是卸载dll先后顺序的问题,让OgreMain_d.dll在mfc80d.dll之前析构,老外早就有分析了:i) in the General tab, switch "Use MFC in a shared DLL" to "Use Standard Windows Libraries" ii) in the C/C++/Preprocessor tab, add _AFXDLL to the preprocessor definitions iii) in the Linker/Input tab, add mfc90ud.lib anywh
阅读全文
OGRE中的四元数与旋转(转)
摘要:想象一个物体在3D空间中移动的过程,该物体必然会涉及到旋转。例如一个怪物,他的运动方向会改变,要改变其方向只需要对其进行旋转即可。 旋转的方式大致分为三种:Euler旋转,矩阵旋转,以及四元数旋转。 这里稍微记录下我目前对于四元数旋转的理解。对于四元数方面的数学,以及其原理,这里不关心,只需要学会如何使用即可。 无论是哪一种旋转,物体与该物体的局部坐标系之间的相对位置,相对方位都是不会改变的。因此,在进行两个局部旋转(即相对于局部坐标系)时,要注意结果可能不是你预期的。 对于Euler旋转,OGRE中为SceneNode提供了yaw, pitch, roll之类的接口。这些接口默认都是参照局部
阅读全文
OGRE接入MFC后在退出时Memery Leak原因分析及解决
摘要:have no idea, how redefining (or rather not defining) macros active for the application code could solve a memory leak report stemming from static data inside Ogre. At least for me, I had the same leak reports and they didn't go away with the given recipe. After some debugging, the reason for th
阅读全文
OGRE中的Vector3没有旋转
摘要:突然发现在Ogre里面Vector3居然没有相关的旋转的方法,不过这样也合理,设计Vector3不需要考虑到这个。还好,用Ogre里面的四元数Quaternion可以很容易做到按照任意轴旋转一个Vector3。只需要构造一个旋转四元数就可以,使用该接口:Quaternion::FromAngleAxis ( const Radian & rfAngle, const Vector3 & rkAxis ) rfAngle :旋转的角度 rkAxis :旋转的参考轴例如:将一个Vector3按照Y轴旋转45度可以这样用: 而且可以从运算结果看到旋转是按照顺时针旋转的。 其次,这样写
阅读全文
Ogre正常初始化(0xc0150002)失败 解决办法
摘要:如果是vc8.0(vs2005)安装以下两个补丁第一个补丁 :VS80sp1-KB926604-X86-CHS.exe(中文版)http://www.microsoft.com/downloads/details.aspx?FamilyID=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&DisplayLang=zh-cnVS80sp1-KB926604-X86-ENU.exe(英文)http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bb4a75ab-e2d4
阅读全文
OGRE 渲染 到 MFC
摘要:网上睇到一个OGRE——MFC的代码就是在mfc 单文挡架构下 cview 里面 onpait 这个消息函数加个settimer 刷新UI 然后 嗯 无了我在这个之上 将CView继成 用个MFC 多线程UI的东东 这样 旁边再加个停靠窗口 用CJ60LibCVIEW插入一个 ogreappliction 不过 这个监听器呢 用OIS OIS 一定要绑定主窗口句柄的 即CMainWND 而渲染那个窗口就要绑定在具体要画在的窗口上 即CVIEW无了 看图:工程要加比较多开源东西本来想做个3D编辑器的停靠窗口 再脚本控制 写些逻辑 场景其他特交 什么器都放里面 而 一放开mfc 外壳窗口 可以比较
阅读全文
MFC全局变量
摘要:用MFC制作的工程由很多文件构成,它不能象一般C++程序那样随意在类外定义全局变量,在这里要想定义能被工程内多个文件共享的全局变量和函数必须用一些特殊方法才行。实际上有多种方法可以实现,这里只介绍两种方法。一、在应用程序类中定义用MFC生成的工程中都有一个名为CxxxApp的类,它派生于CWinApp类。这个类主要进行程序的初始化,生成文档、视图对象等工作。我们可以把需要全局访问的变量和函数定义为这个类的成员变量和成员函数,就可以实现全局访问了。从严格意义上讲,这种变量和函数并不是全局的,因为它仍然只是类中的成员,只是由于我们很容易获得CxxxApp类的指针,所以我们可以在文档、视图、对话框以
阅读全文
Ogre:ManualObject
摘要:通常在Ogre中我们是导入点mesh文件来进行构造实体的,但是很多情况下我们可能就需要创建一个非常简单的平面或是线,或是有时想自己在程序中创建这样物体,这就需要用到Ogre的manual object,它就像你用opengl在程序中绘制一个物体的道理一样,在程序中定义你绘制的信息,而是用起来也很像在opengl中绘制物体。创建一个人造物体的方法通常是这样的:1.需要先用场景管理器去创建一个人造物体的指针ManualObject* mo=smgr->createManualObject("mo");2.然后使用人造物体的begin\end对进行绘制,和在opengl中很
阅读全文
Ogre:StaticObject和projective mapping
摘要:StaticObject在场景中,通常所有物体都是被放在场景节点上的,每次渲染时都会根据物体的移动来更新维护场景树,这样是花费极大的效率的,所以,如果某些物体不必移动,那么可以不把他放在场景树上,这就是StaticObject,将你不必移动物体(如很多山、树)等做成静态物体,会大大提高效率,使用方法很简单:首先用场景管理器创建一个静态物体StaticGeometry* sg=smgr->createStaticGeometry("static ge");然后在这个静态物体里放入你的entity,可以放很多sg->addEntity(ent_l,Ogre::Vec
阅读全文
ogre 周边工具
摘要:1.界面库:这里我们使用ogre自带的cegui,ogre已经经cegui很好的整合进了ogre,我们只需要学习完前边的教程,就可以入门了,这里要介绍个cegui的界面编辑器,celayout,这个在cegui的官方网站上可以下载到,同时官网上还有非常详细的英文教程,这是地址http://www.cegui.org.uk/wiki/index.php/Tutorials,对应教程里边的知识,可以很快的上手,很容易就可以作出很漂亮的界面拉!2.输入库:输入库我们同样采用ogre的自带库,ois,ois很方便实用,同样他也已经被很好的整合进了ogre,在ogre的wiki中同样也有很多ois的资源
阅读全文