ORGE构建

编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的怪兽图像就出现了。
以下是在 VS2015 中配置 OGRE 库的步骤: 1. 下载 OGRE SDK,并解压到一个目录中。 2. 打开 Visual Studio 2015,创建一个空项目。 3. 在项目属性中,选择“VC++目录”,并添加 OGRE SDK 的 include 目录和 lib 目录。 4. 在“链接器”选项卡下,选择“输入”并添加以下库文件:OgreMain.lib, RenderSystem_Direct3D11.lib, RenderSystem_GL.lib。 5. 在“C/C++”选项卡下,选择“预处理器”并添加以下定义:OGRE_STATIC_LIB。 6. 在“调试”选项卡下,将“工作目录”设置为 OGRE SDK 的 bin 目录。 7. 在代码中添加以下头文件: ```cpp #include <Ogre.h> ``` 8. 在主函数中添加以下代码: ```cpp Ogre::Root* root = new Ogre::Root("", "", "ogre.cfg"); if (!root->showConfigDialog()) { return -1; } Ogre::RenderWindow* window = root->initialise(true, "My OGRE App"); Ogre::SceneManager* sceneMgr = root->createSceneManager(Ogre::ST_GENERIC); Ogre::Camera* camera = sceneMgr->createCamera("MainCam"); camera->setPosition(Ogre::Vector3(0, 0, 80)); camera->lookAt(Ogre::Vector3(0, 0, -300)); camera->setNearClipDistance(5); Ogre::Viewport* viewport = window->addViewport(camera); viewport->setBackgroundColour(Ogre::ColourValue(0.6f, 0.6f, 0.6f)); camera->setAspectRatio(Ogre::Real(viewport->getActualWidth()) / Ogre::Real(viewport->getActualHeight())); Ogre::Entity* ogreHead = sceneMgr->createEntity("Head", "ogrehead.mesh"); Ogre::SceneNode* headNode = sceneMgr->getRootSceneNode()->createChildSceneNode(); headNode->attachObject(ogreHead); Ogre::Light* light = sceneMgr->createLight("MainLight"); light->setPosition(20, 80, 50); root->startRendering(); ``` 这段代码将创建一个通过 OGRE 渲染的窗口,并在其中显示一个 Ogre 头实体。需要注意的是,上述代码仅适用于 Ogre 的基本应用程序。对于更复杂的应用程序,需要根据具体情况进行更改。 希望这些步骤能够帮助你在 VS2015 中成功配置 OGRE 库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值