编ORGE源码:
在http://www.ogre3d.org/download/source 下载1.6.5源码,按要求下了对应的Dependencies。我使用的是VS2008。
使用VS打开工程后进入眼里是多个DEMO_ 和 Plugin_开头的项目,最关注的当然是ogre开头的ogremain。那里面完整的核心代码。项目属性里已经配置好了,只要看懂其项目配置的库及目录管理就了解了ogre的环境。
ogremain项目为例,属性里输出目录标为:../../lib/ ogremain_d.dll生成于此,lib目录在工程根目录下生成。(../../就到了工程根目录)
C/C++附加包含目录下包含了"..\include;..\..\Dependencies\include;..\src\nedmalloc" 。可以看出下载对应的Dependencies包应该放在工程根目录下。
链接器附加库目录:"..\..\Dependencies\lib\$(ConfigurationName)"也同上了。给自己普及一下$(ConfigurationName)的VS宏知识
ConfigurationName
配置名字,通常是Debug或者Release
IntDir
编译器使用的中间目录,产出obj文件
OutDir
链接器使用的输出目录
ProjectDir
项目目录
ProjectName
项目名字
SolutionDir
解决方案目录
TargetDir
目标输出文件所在的目录
TargetExt
目标输出的扩展名
TargetFileName
目标输出文件名,包括扩展名
TargetName
目标输出名,不包括扩展名
TargetPath
目标输出文件的全路径名
最后一块要关注的是生成事件的生成后事件,做了2件事:
"copy $(OutDir)\$(TargetFileName) ..\..\Samples\Common\bin\$(ConfigurationName);
copy $(OutDir)\$(TargetFileName) ..\..\Tools\Common\bin\$(ConfigurationName);"
..\..\Samples\Common\bin是所有demo生成后放入的目录文件,此目录文件也是下载的Dependencies包里的Samples目录覆盖的位置。里面包括了配置和库,做为生成DEMO后调用时的环境。
..\..\Tools\Common\bin 即时没有用到还不知道什么用途,已经用到再补充上。
目录理解了,先对ogremain进行编译,应该不会有什么问题,不过会出现一些Waring警告信息,可以处理一些,有些还不知道怎么处理,不过不影响生成DLL文件。
怎么去掉警告: warning LNK4099: 未找PDB“vc80.pdb”
freeimaged.lib(compress.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“..\..\Dependencies\lib\Debug\freeimaged.lib”或在“d:\3D Development\ogre-v1-6-5_vs8\ogre\lib\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样
在项目属性—C/C++—输出文件—程序数据库文件名后面填写$(IntDir)vc80.pdb。
或者:
在项目属性—连接器—调试—生成调试信息后面改成“否”。
warning C4819 :Unicode 格式以防止数据丢失
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 d:\3d development\ogre-v1-6-0\ogre\ogremain\include\ogreparticlesystem.h 625 OgreMain
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失.
这个警告没有什么坏影响,但会影响心情:) 所以还是要治理一下:
哪个文件出现这个警告错误,打开它, 用VS2005的查找替换功能,打开允许正则表达式选项,选择当前窗口,查找替换 \n 为 \n ,? 然后,这个世界就清净了。
原因: 查找的?\n?是跨平台的回车,替换的?\n?却是当前代码页的回车了。
检测从“size_t”转换到“int”
在用到getlen(),size()之类的返回size_t的函数时会发生以下错误:
warning C4267: “参数” : 从“size_t”转换到“int”,可能丢失数据
这是由于VC++2003对于64位可移植性检测没有通过造成的,最简单的解决方法是禁用它:
在菜单里选择:项目->项目属性->C/C++->检测64位可移植性问题
将其改为否即可
这样就很顺利的生成了。
之后对任意一个DEMO_的项目进编译,他会先进行对他需要的Plugin的Dll文件进行编译。主要生成后会如上放在lib目录里同时会copy一份到..\..\Samples\Common\bin\ 执行目录下。编译时可能会报d3x9.h文件找不到,那是由于你使用的环境下没有找到directx9。需要安装的,由于我们的项目是在linux下使用的,只使用OPENGL进行渲染,所以我把RenderSystem_Direct3D9项目卸载。当生成demo的执行文件后,在..\..\Samples\Common\bin\$(ConfigurationName)目录下打开Plugins.cfg把plugin=RenderSystem_Direct3D9 注掉。这样就完成,当执行时OGRE的怪兽图像就出现了。
在http://www.ogre3d.org/download/source 下载1.6.5源码,按要求下了对应的Dependencies。我使用的是VS2008。
使用VS打开工程后进入眼里是多个DEMO_ 和 Plugin_开头的项目,最关注的当然是ogre开头的ogremain。那里面完整的核心代码。项目属性里已经配置好了,只要看懂其项目配置的库及目录管理就了解了ogre的环境。
ogremain项目为例,属性里输出目录标为:../../lib/ ogremain_d.dll生成于此,lib目录在工程根目录下生成。(../../就到了工程根目录)
C/C++附加包含目录下包含了"..\include;..\..\Dependencies\include;..\src\nedmalloc" 。可以看出下载对应的Dependencies包应该放在工程根目录下。
链接器附加库目录:"..\..\Dependencies\lib\$(ConfigurationName)"也同上了。给自己普及一下$(ConfigurationName)的VS宏知识
ConfigurationName
配置名字,通常是Debug或者Release
IntDir
编译器使用的中间目录,产出obj文件
OutDir
链接器使用的输出目录
ProjectDir
项目目录
ProjectName
项目名字
SolutionDir
解决方案目录
TargetDir
目标输出文件所在的目录
TargetExt
目标输出的扩展名
TargetFileName
目标输出文件名,包括扩展名
TargetName
目标输出名,不包括扩展名
TargetPath
目标输出文件的全路径名
最后一块要关注的是生成事件的生成后事件,做了2件事:
"copy $(OutDir)\$(TargetFileName) ..\..\Samples\Common\bin\$(ConfigurationName);
copy $(OutDir)\$(TargetFileName) ..\..\Tools\Common\bin\$(ConfigurationName);"
..\..\Samples\Common\bin是所有demo生成后放入的目录文件,此目录文件也是下载的Dependencies包里的Samples目录覆盖的位置。里面包括了配置和库,做为生成DEMO后调用时的环境。
..\..\Tools\Common\bin 即时没有用到还不知道什么用途,已经用到再补充上。
目录理解了,先对ogremain进行编译,应该不会有什么问题,不过会出现一些Waring警告信息,可以处理一些,有些还不知道怎么处理,不过不影响生成DLL文件。
怎么去掉警告: warning LNK4099: 未找PDB“vc80.pdb”
freeimaged.lib(compress.obj) : warning LNK4099: 未找到 PDB“vc80.pdb”(使用“..\..\Dependencies\lib\Debug\freeimaged.lib”或在“d:\3D Development\ogre-v1-6-5_vs8\ogre\lib\vc80.pdb”中寻找);正在链接对象,如同没有调试信息一样
在项目属性—C/C++—输出文件—程序数据库文件名后面填写$(IntDir)vc80.pdb。
或者:
在项目属性—连接器—调试—生成调试信息后面改成“否”。
warning C4819 :Unicode 格式以防止数据丢失
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失 d:\3d development\ogre-v1-6-0\ogre\ogremain\include\ogreparticlesystem.h 625 OgreMain
warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失.
这个警告没有什么坏影响,但会影响心情:) 所以还是要治理一下:
哪个文件出现这个警告错误,打开它, 用VS2005的查找替换功能,打开允许正则表达式选项,选择当前窗口,查找替换 \n 为 \n ,? 然后,这个世界就清净了。
原因: 查找的?\n?是跨平台的回车,替换的?\n?却是当前代码页的回车了。
检测从“size_t”转换到“int”
在用到getlen(),size()之类的返回size_t的函数时会发生以下错误:
warning C4267: “参数” : 从“size_t”转换到“int”,可能丢失数据
这是由于VC++2003对于64位可移植性检测没有通过造成的,最简单的解决方法是禁用它:
在菜单里选择:项目->项目属性->C/C++->检测64位可移植性问题
将其改为否即可
这样就很顺利的生成了。
之后对任意一个DEMO_的项目进编译,他会先进行对他需要的Plugin的Dll文件进行编译。主要生成后会如上放在lib目录里同时会copy一份到..\..\Samples\Common\bin\ 执行目录下。编译时可能会报d3x9.h文件找不到,那是由于你使用的环境下没有找到directx9。需要安装的,由于我们的项目是在linux下使用的,只使用OPENGL进行渲染,所以我把RenderSystem_Direct3D9项目卸载。当生成demo的执行文件后,在..\..\Samples\Common\bin\$(ConfigurationName)目录下打开Plugins.cfg把plugin=RenderSystem_Direct3D9 注掉。这样就完成,当执行时OGRE的怪兽图像就出现了。