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后确认一下状态是否跟以下一样
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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的编译下次再说吧
有问题欢迎大家一起探讨