好事多磨:Ogre1.7 编译记

Ogre3D官方于上个月末放出了1.7的稳定版本。据称该版本与旧版1.6x比起来,改动幅度较大。因此作为一名Ogre使用用户,“与时俱进”既是我的责任,又是变被动为主动的上乘战略。于是,学习新的Ogre系统成为我计划中的一部分。

与以往不同,新Ogre的编译策略完全采用了CMake安装方式。为此,你首先要下载CMake工具才能安装Ogre。不过,官方在wiki中对如何安装新Ogre进行了详尽的说明,包括在哪里下载CMake以及如何使用它,都有step-by-step的指导。因此只要按照说明来,你“应该”可以顺利地看到通过CMake释放出的Ogre.sln。

之所以说“应该”,是因为种种原因,还是有相当大的几率会遇到“挫折”。遇挫的可能性取决于与新Ogre有关联的周边配置。拿本人案例来说,就是要看你的DX SDK版本以及VC版本是否一致了。

具体我的悲惨编译经历如下:

. 在公司机子上下载Ogre1.7并按指导进行安装,选择VC2003编译器编译,一切顺利,没有见到任何阻碍。很快就看到了Ogre.sln;编译Ogre.sln,全部顺利生成成功。心想新Ogre的用户体验不错嘛,没想到这么顺。注意,此机子的DX9 SDK版本是2009(March)的。

. 回家后重新下载Ogre1.7并安装,打算给本本也升级至新版。本本的DX9 SDK版本还停留在05年的古董级。就这样,开始,同样的步骤(依然选择了VC2003编译器)——然后,所以但是卡壳了。CMake在处理RenderSystem_Direct3D9时出现问题,具体出错信息想不起来了,抱歉。但稍稍分析一下即知,是找不到DxErr.h这个文件。经过google知道这是一个DX9 SDK新版本里的文件。于是,卸载旧的版本,选择最新的DX9 SDK (2010 February版本,新鲜出炉的呀)安装。

. 接着重新一开始的步骤——然后,终于见到Ogre.sln了,很好很强大。然后继续Ogre.sln的编译。经过近一个小时的编译——全部生成——除了一个RenderSystem_Direct3D9的工程!我艹,又是它。分析得知,DxErr.h虽然有,但它里面用到的__in却是一个无法识别的符号。继续google,得知__in是存在于VC2005中的一个系统变量。换句话说,如果要使用DX9 SDK(2010 Feb)版,就要用VC2005来编译工程了。

. 重新卸载了DX9 SDK(2010 Feb)版,下载了DX9 SDK(2009  March)版来装。然后,再次开始编译旅程——终于全部搞定!

从这里可以看到这个编译过程实际上对 Ogre – DX9 – VC 这条链上的版本有相对严格的要求。Ogre – DX9的环节可能会出错,同样DX9 - VC的环节也可能会出错。

Done~

ps:  顺便一提,在参观Ogre1.7的地形Sample时,点击Start后会发现程序陷入“死掉”状态,突然就那么不反应了。开始我以为又是什么bug所致,追踪源码后发现,原来是初次运行时Ogre要计算一张1024*1024的光照贴图(见OgreTeerain.CalcLightmap.for.for),此时用时较长,并没有真正死掉,只要耐心等一段时间,就会顺利打开这个Smaple,而且这张lightmap是生成一次,终生受用的。以后只要还是相同的地形,再次打开时直接载入,不必再等那么长的时间了。

另外,发现Ogre还没有提供对1.7系统的学习指导wiki,我想只有靠自己去摸索了。最好的方法应该就是认真参观各Sample大神了吧。

posted on 2010-03-06 12:42 lookof 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lookof/archive/2010/03/06/1679633.html

好事多磨:Ogre1.7 编译记相关推荐

  1. Chromium内核浏览器编译记(一)踩坑实录

    转载请注明出处:https://blog.csdn.net/kong_gu_you_lan/article/details/123862868 本文出自 容华谢后的博客 往期回顾: Chromium内 ...

  2. [编译原理随记]正则表达式转为NFA状态图(Thompsion构造法)

    上级文章 [编译原理随记]正则表达式记号和状态图:https://blog.csdn.net/qq_28033719/article/details/107067798 [编译原理随记]NFA转DFA ...

  3. 记一次太阳神三国杀的编译

    记一次太阳神三国杀的编译 这是一次学习太阳神三国杀的编译方法,奈何本人技术不大行,如有错误或者不周到的地方还请指出 以下的经验都是我自己遇到的问题,如果你也遇到了一样问题希望对你有所帮助 太阳神三国杀 ...

  4. android 重新编译内核,[原创]华为内核重新编译踩坑记

    华为内核重新编译踩坑记 前几天有朋友找我帮他跟一个加密,由于js太乱了,想从app入手,于是打算用frida脱壳,结果发现报错 Failed to attach: remote_write PTRAC ...

  5. 记一次还未成功的反编译锤子桌面APP

    更新信息 时间 <记一次还未成功的反编译锤子桌面APP> 20171129 暴力替换数据库更新item信息 20171201 暴力替换数据库更新item信息 在之前的分析过程中得知,只要更 ...

  6. 记webpack3.x版本远古老项目编译优化实战

    记webpack3.x版本远古老项目编译优化实战 本文内容只针对开发环境优化 生产环境可作参考 为何要优化? 每次执行npm run dev 需要等待24~28s,每次ctrl + s触发热更新需要等 ...

  7. 记一次编译Cesium踩坑记录

    记一次编译Cesium踩坑记录 cd cesium npm install npm install express --save npm install compression --save npm ...

  8. Android 英语单词本英语单词记单词有登陆注册界面Android studio编译

    Android 英语单词本英语单词记单词有登陆注册界面Android studio编译 样例图: 项目视频: Android 单词本英语单词记单词有登陆注册界面,Android studio编译 项目 ...

  9. apache 编译php mysql_记一次痛苦的过程-------源码编译安装apache+php5+mysql

    当时有我们准备做一个项目,于是我就自己搭建了lamp服务器,直接yum install所有文件,因为centos是一个比较稳重的系统,所以它上面所有软件都不是最新的,apache是2.2.15版本,p ...

最新文章

  1. 《编写高质量代码:改善Java程序的151个建议》笔记
  2. Python 排序 -- sort()、sorted()
  3. Linux 中统计一个进程的线程数
  4. Node.js进程管理之Process模块
  5. SSM框架搭建+easyui增删改查
  6. 【今日CS 视觉论文速览】Part2, 18 Jan 2019
  7. 想买一辆别克GL8用做家庭用车,跑长途自驾游可以吗?
  8. 在.NET项目中使用PostSharp,使用MemoryCache实现缓存的处理
  9. R大 关于 G1 算法原理的解释说明
  10. 华为数据治理及数据分类管理实践
  11. 手机裁剪圆角图片_Photoshop裁剪圆角图片方法
  12. 分享scratch转exe可执行文件scratch2exe-ch-se
  13. 两个很重要的极限和夹逼准则
  14. GCN使用的数据集Cora、Citeseer、Pubmed、Tox21格式
  15. OpenGL PowerVR SDK 编译:Could NOT find X11 (missing: X11_X11_INCLUDE_PATH X11_X11_LIB)
  16. 老马闲评数字化(4)做数字化会不会被供应商拿捏住
  17. 23电工杯数学建模B题
  18. 命中率 计算机组成原理,计算机组成原理-求命中率.pptx
  19. php遵义旅游管理系统 毕业设计-附源码091801
  20. mapbox 支持国家2000 坐标系的数据

热门文章

  1. freemarker迭代list、map等常规操作
  2. C# win10系统调用不了系统自带的软键盘osk.exe
  3. 协同过滤——基于邻域的算法
  4. Flutter升级到1.12填坑指南
  5. CMS之promotion failedconcurrent mode failure
  6. hive性能优化指南
  7. Hbase总结(四)- Hbase与传统数据库的区别
  8. python通过hive transform处理数据
  9. Dockerfile构建MySQL
  10. easyui datebox时间控件如何只显示年月