Ogre+Havok研究------一、框架搭建

     这个框架其实基本是抄自一位老兄 shangguanwaner的博客的,他的博客上有四篇写得非常好的文章和源代码,很适合新手学习(本文将于文章最后提供下载链接与引用链接)

     当然,我也是兴冲冲地去下了,但是下来就发现了因为这位老兄使用的havok sdk库估计是6.0版左右的,所以和我们最新版的还是有点差别的.....于是改造就此开始,我也是尝试了一晚上加一早上才完全成功的......(关于源码的剖析请去婉儿兄的blog查看吧,相信大家已经百度出来了)

第一步 头文件与内存类:

     首先关于附加依赖项(lib)..就不用说了,头文件本来也应该问题不大的,奈何版本更新了,有一部分的名字或是路径变了,这个大家稍微思考下再搜索下应该问题也不大,不过一个大问题就马上出现了,在下过来的代码中有一个类叫什么hkPoolMemory,但是似乎根本找不到类似的头文件,文档中连类也找不到,怎么办..?

     后来找到个老外的文件,发现只要把原来的

hkPoolMemoey*    m_MemoryManager; 

改为一个新的内存管理类-----

hkMemoryRouter*        m_MemoryManager;  

即可.....这个头文件的位置为 #include

 

然后其初始化方法也相应改为

m_MemoryManager=hkMemoryInitUtil::initDefault();

 

同时系统的函数也变了 hkResult a=hkBaseSystem::init(m_MemoryManager,errorReport);


这个内存管理类似乎是无视不同线程对内存进行统一管理的,因此把代码中关于thread memory的部分也全删掉

比如 m_ThreadMemory = new hkThreadMemory(m_MemoryManager);   删掉

 

同理,关于stack memory的也全删掉......比如 m_ThreadMemory->setStackArea(0,0);,删掉

不要忘了m_MemoryManager是不用removeReference的,也删掉......

 

第二步 法向出错?:

似乎改造完成了,不过马上就进入了第二步

开始跑...哎,怎么出错了?发现是一个很奇怪的什么 InvalidAxis问题,一看文档好像是方向没有初始化,导致其法向的长度为0..因此在每个创建rigidbody的函数前都加上句  ci.m_rotation=hkQuaternion(0,0,1,0);,就是定义好它的朝向(方向可自设)。

 

第三步 程序运行性能:

呼呼,终于解决了,开始跑,却发现按了一下  “1”  但是几乎跑不起来,极卡.....为啥.?后来想想估计是DEBUG和Release版本之间的区别,那位博主发给我们的是release版的程序,自然快多了..于是我也试试release,果然很流畅...所以想在debug版本下跑得欢的同志们,改一下源代码中那个生成1000个立方体的三层循环,去掉一层只生成100个就自然能跑了...ok了,似乎就了结了...

不过似乎还是有问题的,比如我把生成立方体的循环改成生成球,不知道为什么就出错了....继续改造吧

     下一步是真正的加点自己的东西进去....

 

其实我觉得大家应该都有了,不过出于完整性的考虑,就放个链接吧

Havok官方最新下载地址:http://software.intel.com/sites/havok/

Ogre下载地址: http://www.ogre3d.org/download/

框架源码下载地址:http://code.google.com/p/ogrehavok/downloads/list

 shangguanwaner的博客:http://blog.csdn.net/shangguanwaner/archive/2009/02/10/3875471.aspx

你可能感兴趣的:(Havok+Ogre,框架,文档,thread,blog,百度)