PLSM场景管理器的使用

来源:互联网 发布:yurisa的容貌知乎 编辑:程序博客网 时间:2024/06/05 00:58

注:本文为原文转载,未做修改,仅作为参考。

由于Ogre自身的场景管理器不支持大地形, 所以查看了相关资料, 听说PLSM还不错, 就装来试试.
使用过程真不容易, 出现了不少问题.
由于我的Ogre版本为1.6.2, 所以我先升级Ogre版本到1.6.5.
结果升级后, 运行debug版本的程序会跳出 应用程序正常初始化(0xc0150002)失败
网上搜索, 说缺少vs2005补丁, 或者需要运行程序, 总之没有解决问题.
最后研究了半天, 还是下载了 ogre源码, 自己编译出ogremain_d.dll等库文件, 覆盖sdk里面的dll才解决问题. 看来是由于开发人员编译的dll不适用于每台电脑, 以后还是自己编译的dll放心.


解决了应用程序初始化问题, 再去翻关于PLSM的wiki介绍
按照步骤使用PLSM场景管理器, 结果链接的Plugin_PagingLandScapeSceneManager2.dll库有问题
因为PagingLandScapeSceneManager场景管理器每次创建相机的时候在以下语句里出现了异常
void PagingLandScapeOctreeSceneManager::registerCamera (PagingLandScapeOctreeCamera *c)
{
    mPagingLandScapeOctree->traversal(RegisterCameraTraversal(c), 0);

再次研究了半天, 最后还是在ogre论坛里找到了解决方案, 自己重新编译Plugin_PagingLandScapeSceneManager2.dll的工程文件, 但是需要在C++的预编译头中加上该符号 _PLSM_OCTREE
到现在为止, 终于可以运行程序, 看到PLSM的场景管理器创建的场景.

之所以出现这个异常, 根据他人介绍, 这是由于在windows下, 程序缺省情况下不会创建PagingLandScapeOctreeSceneManager对象, 而你的代码则会假定它会创建并使用它, 你可以看到运行该处异常时mPagingLandScapeOctree为Null.

注:转载源地址