http://www.cnblogs.com/ybgame/archive/2011/10/20/NxOgre.html
这段时间相对较闲,对《疾风》的开发也提上议程了...
这是一款局域网内多人竞技的3D赛车游戏,准备使用OGRE作为图形渲染库,PHYSX作为物理库,CEGUI作为界面库,网络部分和主框架自己实现
这是用业余时间来写的游戏,但随着技术和思想各方面的提升,以及对游戏开发的激情,我一定要把这个游戏写好
前段时间看了Ogre Wiki上的系列教程,把初级教程和中级教程都翻译了,而后发现这两个竟然都已经有人翻译过了,但在翻译的这段时间里,E文长进不少,对Ogre的理解也有所提升,所以也不算做无用功吧,Ogre是个图像引擎,单单有它是不够的,网络和逻辑方面都不成问题,唯一的问题就是物理引擎了,因为对这款游戏要求比较高的真实性,所以必须用物理引擎不可,ODE是跟Ogre比较搭的一个物理引擎,使用起来也比较简单,但久仰Physx大名,未曾在项目中实际运用起来,所以还是选择了这款更为牛叉的引擎,NxOgre是Physx的一个包装库,把Physx包装起来,方便Ogre使用,在网上看到一系列NxOgre的tutorial,依照上面所说去访问nxogre的官网,蛋疼地发现,竟然访问不了,翻qiang再探,也还是访问不了...看来是被和谐了...于是开始了NxOgre的探索之路,这里把这条曲折的路描绘出来,以避免各位道友重蹈覆辙(废话就到这里)
第一步是要安装OGRE,这一步我就不多说了...Ogre的wiki讲得很清楚,我另外也翻译整理了一篇Ogre环境搭建的文档,有需要我再贴出来吧,虽然Ogre的搭建也不是一帆风顺,但问题总比NxOgre少多了。这里需要注意的问题就是版本问题,最好就是拿最新版本吧,不要拿1.7.0之前的版本,因为改动比较大。主要的改动就是1.7.0以后的Ogre去掉了CEGUI,添加了SDKTray,然后Example是由一个Browser+Example的dll插件,封装得更深了...1.7.0之前的是整合了CEGUI,Example的框架也比较简单...或许还有其他一些特性的变化,这些不去深究,需要注意一个问题:Ogre的环境变量要设置好,后面NxOgre的编译会根据Ogre环境变量来查找头文件和库文件
第二步是要安装Physx,这里的版本尤为重要!最好也是下最新版本,(但最新版本也有可能编译不过,当NxOgre是旧版本的时候),Physx和NxOgre的版本需要对应好,否则编译的时候会发生一些成员变量没有定义的问题,如果你发现类似问题,就说明两者的版本不对。我之前下载了pudn上面的2.7.1版本,就出现了编译不通过的情况,后面狠心在csdn上面花了10分下载了一个2.8.4的版本,最后才编译通过。Physx也需要注意环境变量的问题。
第三步是编译NxOgre,根据我搜索到的Old Tutorial,下载的是BloodyMess1.5.5这个版本,这个版本需要编译3-4个项目,但只要编译NxOgre通过,以及OgreRenderSystem通过就可以用了,弄了很久都无法完全编译过。。。可能是版本太旧,最后实在是无奈,在Ogre官网找到了一个比较新的NxOgre,这个Ogre需要编译两个项目,一个NxOgre,还有一个Critter。先编译NxOgre,设定好NxOgre的环境变量,再编译Critter(作用同OgreRenderSystem),然后设置好Critter的环境变量,然后就可以编译NxOgre最新的Tutorial了。。。注意,这些Tutorial生成的也是dll插件,要用Ogre的SampleBrowser才可以打开。
NxOgre的下载地址https://github.com/betajaen/nxogre/
Critter的下载地址https://github.com/betajaen/critter
Tutorial的下载地址https://github.com/betajaen/nxogretutorials
第四步是运行Tutorial,编译Tutorial之后,会自动在Ogre的bin目录下生成dll,以及修改它的samples.cfg配置文件,在运行之前要做两件事,首先要讲tutorial的资源添加到配置文件中,在tutorial目录下可以找到media目录,然后里面会有nxogre.zip文件。把它拷贝到Ogre Samples的media目录下面,然后在资源配置文件中加上这个zip包即可
这时候虽然资源有了,但是运行可能还会报错,洒家就报了如下错误
这个问题呢,百度上面一搜可以搜到很多答案,但是呢,在这个情况下都不是正确答案,此时需要把你2.8.4sdk的所有dll都拷贝过来(也许不是所有的,但我以及懒得一个一个去试了...),即可运行!菜菜还可能会遇到Debug和Release版本混乱导致的运行错误,简单的说,Debug模式编译的程序需要的都是debug模型下编译的dll,Release就需要Release的,在这里不可以混用。
最后贴一张NxOgre成功运行的图。
分类: Physx