mogre1.7.1编译小记

在使用MogreSDK 1.7.1时发现vector3只有float类型,因为我的项目里要用到double数据,在float跟double之间互转时难免造成了精度丢失,从而造成了一些不可预测的错误。

纠结了很久,还是决定自己重新编译一个高精度版的Mogre

这是官网的一些关于怎么编译mogre的资料

 

 我用第一种方法编译出来的mogre渲染出来的效果锯齿现象很严重,不知道是什么原因,在论坛上找了很久还是没找到解决方法,只能放弃

第二种方法只能编译VS2010版的,因为我机器上没有VS2010,暂时也不打算用,所以跳过

剩下的只有第三种了,第三种虽然步骤比较繁琐,但只要一步步都严格按照他的顺序来,基本上不会有什么大问题

但是我还是遇到了一些小问题,在此记录一下:

 首先需要安装TortoiseHg,可以在这里下载:http://tortoisehg.bitbucket.org/

 新建一个用来存放Mogre的目录,右键TortoiseHg->clone,出来如下界面:

 

 SourcePath输入mogre代码服务器地址 http://bitbucket.org/mogre/mogre

 DestinationPath输入你要存放的本地的路径

 Advanced Options里选上clone to revision, 输入Mogre17 (这一步必须要做,不然下过来的是最新的版本,该 instructions只适用于特定版本)代码

 

同样的步骤clone ogre的source

存放目录最好也按照上面的指示来

代码下过来之后先给ogre打个补丁,在ogre目录下右键 hg repository  Explorer,点击这个按钮:

出来这个界面:

 source里选择patch所在目录Mogre\Main\Ogre Patches\58266f25ccd2.patch

这里要注意一定要把Do not strip path勾上,不然会截断路径出现找不到文件的错误

一路按照上面的步骤一直到Cmake时,configure成功后,选advanced, 把OGRE_CONFIG_ENABLE_PVRTC勾上,把OGRE_CONFIG_CONTAINERS_USE_CUSTOM_ALLOCATOR的勾去掉

因为我要编译double版的,所以把OGRE_CONFIG_DOUBLE也勾上了

重新configure后确认一下状态是否跟以下一样

 

代码
Build type:                      dynamic
Threading support:               none      
//把OGRE_CONFIG_THREAD设为0, OGRE_CONFIG_THREAD_PROVIDER设为none
Use double precision:            disabled  //这里根据你自己情况来定,如果你觉得float够用的话就disabled掉
Allocator type:                  nedmalloc (pooling)
STL containers use allocator:    disabled
Strings use allocator:           disabled
Memory tracker (debug):          disabled
Memory tracker (release):        disabled
Use 
new script compilers:        enabled
Use Boost:                       disabled  
//确保这里是disabled掉的,不然boost库会跟msvc库冲突

 

 

再重新configure下,成功后点generate就会生成项目文件了

接下来都按照说明来就可以了

MOIS跟MogreFramework的编译下次再说吧

有问题欢迎大家一起探讨

 

 

posted @ 2010-12-06 14:07  icecryed  阅读(1184)  评论(0编辑  收藏  举报