微软公司开发的visual c++6.0堪称史上最易用、最成熟的开发工具。vc6以其小巧、轻便赢得了程序员的喜爱,以至于在VS大行其道的时代,很多程序员仍然使用vc6作为开发工具,vc6的欢迎性可见一斑。可惜vc6有一个缺点,那就是不能开发ogre应用程序。网上的教程,链接已经过时。个人也是查找了好多资料,搞了整整一上午才终于配置得差不多,但仍然失败了好几个,不过已经不影响大局了。
ogre是一个极其复杂的工程,它借助了许多的第三方库,比如说boost、stlport。所以编译ogre也是一个相当复杂的过程。尤其是在vc6中,缺少stlport的支持使得我们不得不重新编译stlport库。当然还涉及到了DirectX SDK的问题。
完整清单:
stlport     4.6.2
DirectX SDK 8.0&9.0 
Ogre        0.13
Ogre Depencies 0.13
据此,ogre的编译分三个部分进行。
一、编译stlport
stlport是vc的一个拓展库,在vc7也就是vc.net后才集成到vc里面。也就是说vc6是不支持stlport的,我们得自行让其支持
到stlport官网http://www.stlport.org/下载stlport库,我这里用的是4.6.2版本的。解压缩至某一目录,比如D:\STLport。然后点击开始-》运行,键入cmd,打开命令提示符,切换到$STLPORT_DIR\src目录下,键入"nmake -f vc6.mak",编译stlport。注意:在运行命令之前,确保环境变量里加入了nmake的路径,没加入也没有关系,进入vc安装目录,里面有个vc98-》bin,将bin文件夹下的VCVARS32.bat拖到命令窗口,然后回车就能设置nmake的路径。等待几分钟后,就编译完成了。
二、安装DirectX SDK
一定要安装DirectX X.X SDK(X指版本号),而不是什么DirectX Aug08这些版本。vc6只支持8.0或9.0的版本,并不支持往后的版本。(记得原来编译的时候不知道,下了DirectX Aug08,出了一大堆错误)下载地址参考CSDN上的这篇文章blog.csdn.net/asasj57/article/details/5641161
下载之后的安装就没什么好说的了,直接解压然后进入解压目录,运行setup.exe安装就行了。
三、编译ogre
现在到了最关键的了,到ogre官网下载ogre 0.13和ogre0.13的依赖库。下载之后的ogre解压到某一个文件夹,比如D:\ogreSDK。然后把ogre的依赖项解压,而后将Dependencies和samples两个文件夹复制到ogrenew里面并且覆盖掉同名文件夹。打开ogrenew里面的工程文件,ogre.dsw。
选择tools-》opyions,打开选项对话框,切换到directories选项卡,分别配置include files和library files
include files:
1.C:\DXSDK\INCLUDE                                              \\DirectX 9.0的安装目录
2.D:\OGRESDK\OGRENEW\OGREMAIN\INCLUDE             
3.D:\OGRESDK\OGRENEW\DEPENDENCIES\INCLUDE
4.D:\STLPORT\STLPORT
ps:这几项的先后顺序绝对不能错,否则会出现一些莫名其妙的问题。
library files:
1.C:\DXSDK\LIB                                                           \\DirectX 9.0的安装目录
2.D:\OGRESDK\OGRENEW\OGREMAIN\LIB\DEBUG  
3.D:\OGRESDK\OGRENEW\DEPENDENCIES\LIB   
4.D:\STLPORT\LIB                                                         
同样,这几项也不能改动顺序。
至于说DirectX 8.0要不要安装,我的建议是最好安上,以免出现不必要的错误。安装完毕之后,将其include文件夹和lib文件夹分别加入到vc6的目录中的最后一项就行了。到这里就没有问题了,最后点击build菜单-》Batch build,在出现的对话框中选择build,然后ogre就开始自动编译了。

我的情况是编译之后,有几个工程失败了,提示都是

  1. d:\stlport\stlport\stl\type_traits.h(361) : fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit

不知道这是不是stlport版本的问题,欢迎知道的朋友与我交流。不过幸亏这几个错误不影响大局,所以我们才得以继续。

经过大约20多分钟的等待,ogre终于编译完成了,我们来验证一下是否真的编译成功。
新建一个win32 console application工程,工程名就是ogre demo。选择一个空的工程,点击完成。
配置我们的工程:选择project-》settings,打开工程选项对话框,切换到link选项卡,在category列表框中选择input,在下面的文本框中输入OgreMain.lib(注意不要带_d,我们编译出来的这个静态链接库是不带_d的)。然后在下面的ignore libraries中输入LIBCD.lib.点击“OK”完成。
其实最好在working directory中输入你的ogre编译后的那些dll、lib的路径,一般是$OGRE_DIR\Samples\Common\Debug,当然如果是Release版本就输入release。这样你就不用在每次生成EXE文件后,将这个文件复制到那个目录下了。(笔者按:这样虽说方便了一些,但通过笔者亲测,这样总是会导致一些莫名其妙的错误)
好了继续我们的测试,新建一个cpp文件,在里面键入如下代码:

如果不出意外的话,就会看到一个机器人显示在屏幕上。

至此,我们的ogre编译就算成功了。

-------------------------------------------------------------------------

写在最后:

原文虽说有几个工程没有编译成功,主要是集中在那几个工具,例如XMLConver、MilkshapeExporler、MeshUpgrader、MatrialUpgrader。但是经过笔者的一番探索,总算是编译成功。具体方法如下:这几个工程普遍提示以下的错误,

d:\stlport\stlport\l\type_traits.h(361) : fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit

解决方法很简单,右击没有编译通过的工程,比如MilkshapeExporler,然后选择settings,打开工程设置对话框,在project options里键入"/Zm500",然后点击"OK"完成设置,最后编译。。。成功!

在VC6中使用ogre进行游戏开发的更多相关文章

  1. 《Cocos2d-x游戏开发实战精解》学习笔记3--在Cocos2d-x中播放声音

    <Cocos2d-x游戏开发实战精解>学习笔记1--在Cocos2d中显示图像 <Cocos2d-x游戏开发实战精解>学习笔记2--在Cocos2d-x中显示一行文字 之前的内 ...

  2. MVC模式在游戏开发的应用

    原地址: http://www.cocoachina.com/gamedev/2012/1129/5212.html MVC是三个单词的缩写,分别为:模型(Model).视图(View)和控制Cont ...

  3. 《Cocos2d-x游戏开发实战精解》学习笔记4--实战一个简单的钢琴

    上一节学习了使用Cocos2d-x播放音乐的方法,但是那种方法一般只适合于播放较大的音乐,而一般比较短小的音乐(如游戏中的打斗.按键音效等)则要通过playEffect来播放.本节使用该方法以及之前学 ...

  4. OCulus Rift 游戏开发六原则

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/46685477 作者:car ...

  5. DirectX12 3D 游戏开发与实战第五章内容

    渲染流水线 学习目标: 了解用于在2D图像中表现出场景立体感和空间深度感等真实效果的关键因素 探索如何用Direct3D表示3D对象 学习如何建立虚拟摄像机 理解渲染流水线,根据给定的3D场景的几何描 ...

  6. 转: Orz是一个基于Ogre思想的游戏开发架构

    Orz是一个基于Ogre思想的游戏开发架构,好的结构可以带来更多的功能.Orz和其他的商业以及非商业游戏开发架构不同.Orz更专著于开发者的感受,简化开发者工作.Orz可以用于集成其他Ogre3D之外 ...

  7. [Unity游戏开发]向量在游戏开发中的应用(三)

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51088236 在上一篇博客中讲了利用向量点乘在游戏开发中应用的几种情景.本 ...

  8. [Unity游戏开发]向量在游戏开发中的应用(二)

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/50972976 在上一篇博客中讲了利用向量方向的性质来解决问题.这篇博客将继 ...

  9. [Unity游戏开发]向量在游戏开发中的应用(一)

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/50810102 向量在游戏开发中是非常实用的,我们在学校学完向量的知识后,只 ...

随机推荐

  1. 高等数学(拉格朗日乘子法):NOI 2012 骑行川藏

    [NOI2012] 骑行川藏 输入文件:bicycling.in   输出文件:bicycling.out   评测插件 时间限制:1 s   内存限制:128 MB NOI2012 Day1 Des ...

  2. 部署ASP.Net项目 遇到总是启用目录浏览或者报HTTP 错误 403.14 - Forbidden 的原因

    部署Asp.Net 网站总是报下面的问题 原因: 没有为网站指定默认文档,增加默认文档 1.选中“默认文档” 2.点击右边“打开功能” 点击右边“添加”按钮,把你想作为的默认页面添加就可以了,重启服务 ...

  3. HDOJ(HDU) 2139 Calculate the formula(水题,又一个用JavaAC不了的题目)

    Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 看到这个时间,我懵逼了... 果然,J ...

  4. 译文链接:http://www.codeceo.com/article/10-truth-programmer-must-know.html

    大多数时候,写代码都是挺有意义的一件事,不光能增加经验值,解决难题的时候还特别爽.耐心.毅力.执着,再加上正确的工具——只要有它们的亲密协作,优雅.漂亮的代码就是手到擒来的事儿. 但是,紧接着拙劣的资 ...

  5. Piotr's Ants UVa 10881

    #include <cstdio> #include <cmath> #include <algorithm> #include <iostream> ...

  6. Postman 安装 & 资料

    安装 下载地址: http://chromecj.com/web-development/2014-09/60/download.html 怎么在谷歌浏览器中安装.crx扩展名的离线Chrome插件? ...

  7. hdu 4424 & zoj 3659 Conquer a New Region (并查集 + 贪心)

    Conquer a New Region Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...

  8. 361. Bomb Enemy

    这个题确实不会..只能想到naive的做法,不过那样应该是O(n³),不会满足要求. 看TAG是DP,那应该是建立DP[][]记录每点可炸的情况.一个点如果左边/上边是墙,或者左边/上边是边界,就要重 ...

  9. python中如何判断list中是否包含某个元素

    在python中可以通过in和not in关键字来判读一个list中是否包含一个元素 pythontab = ['p','y','t','h','o','n','t','a','b'] if 't' ...

  10. Manacher思想 SCOI2013 密码

    关于$\mathrm{Manacher}$算法,网上介绍已经很全面 这里说一下自己的理解 这里的$rad$数组:$rad_i$表示以以位置i为中心的最长回文串的回文半径(不包括i这个点). 朴素的思想 ...