win7(64位)+vs2010+orge1.8.1

环境:win7(64位)+vs2010+orge1.8.1

说明:orge1.8.1不需要安装vs2010 sp1,自身带了opengl,也不需要安装dx和gl。


安装SDK,运行Demo


下载:


1 OGRE SDK: http://www.ogre3d.org/download/sdk

2 OGRE Dependencies:http://sourceforge.net/projects/ogre/files/ogre-dependencies-vc++/1.7/

OGRE Dependencies是Ogre进行编译时需要的支持文件,一般包括OIS库,CG库,GUI库,这些库在Ogre中均经常用到。如果缺少这些文件,则源码无法进行编译,后期编译出来的Ogre也无法使用OIS、CG、GUi等。

3 Cmake : http://www.cmake.org/cmake/resources/software.html

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。OGRE从1.7开始使用Cmake生成工程文件,主要为方便平台移植。

4 OGRE 工程向导: http://download.csdn.net/detail/sangni007/5185193 (版本问题,已经失效估计是针对1.7的)

配置步骤:


1 解压OgreSDK_vc10_v1-8-1.exe,将解压得到的OgreSDK_vc10_v1-8-1放在D:\c\orge\orgeSpace
2 设置环境变量,变量名:ORGE_HOME  变量值D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1
3 解压Dependencies得到Dependencies文件夹啊,放到D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1中
4 进入D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\Dependencies\src打开vs2010.sln,分别在Released,Debug下进行编译(vs2010->Build->Configuration Manger中切换)
5  进入D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1(注意不是进入D:\c\orge\orgeSpace\OgreBuild),打开Ogre.sln,编译工程,把SampleBrowser设置为默认启动项(默认是AllBuild为启动项)。运行即可,运行时选择opengl。


安装工程向导


安装Ogre_VC10_AppWizard_1.8.0.exe到SDK目录下





源码编译

1 解压源码
2 把Dependencies放到解压后的 D:\c\orge\orgeSpace\ogre_src_v1-8-1中
3 进入D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\Dependencies\src打开vs2010.sln,分别在Released,Debug下进行编译(vs2010->Build->Configuration Manger中切换)
4 打开cmake,设置好路径如下图,然后两下Configure,一下Generate



5  打开D:\c\orge\orgeSpace\Ogre_src_sdk\OGRE.sln 分别在release,debug下编译,然后会在D:\c\orge\orgeSpace\Ogre_src_sdk\bin\release(debug)下会产生我们需要的dll文件,release和debug中都有相关配置文件,另外D:\c\orge\orgeSpace\Ogre_src_sdk\bin中minsizerel,relwithdebinfo两个文件夹中也有相关配置文件,我们可以利用这些配置文件和生成的dll文件来手动构建自己的ogre工程。


手动(用源码)构建工程

1 新建win32工程

也可使用空工程,需要做些配置,Linker->System->SubSystem:Windows (/SUBSYSTEM:WINDOWS)


2 引入头文件

D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\include\OGRE;
D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\include\OIS;
D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\include;(include下没有.h文件但是代码里有的引用是带有文件夹目录的比如<OIS/OIS.h>,所以不引include会出问题)
D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost;

这里用的sdk的头文件,也可以用源码的头文件,直接copy到当前工程新建个lib就ok

源码的头文件位于,cmake编译前的D:\c\orge\orgeSpace\ogre_src_v1-8-1\OgreMain\include

OIS是独立库,头文件直接从sdk中取

3 引入库文件

  1. kernel32.lib  
  2. user32.lib  
  3. gdi32.lib  
  4. winspool.lib  
  5. shell32.lib  
  6. ole32.lib  
  7. oleaut32.lib  
  8. uuid.lib  
  9. comdlg32.lib  
  10. advapi32.lib  
  11. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreMain.lib  
  12. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OIS.lib  
  13. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgrePaging.lib  
  14. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreTerrain.lib  
  15. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreProperty.lib  
  16. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreRTShaderSystem.lib  
  17. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_thread-vc100-mt-gd-1_49.lib  
  18. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_date_time-vc100-mt-gd-1_49.lib  
  19. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_date_time-vc100-mt-1_49.lib  
  20. D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_thread-vc100-mt-1_49.lib  

部分库可能不是必须的,没做详细区分,这里用的sdk的库文件,也可用源码生成的库
源文件编译后的
lib位于D:\c\orge\orgeSpace\Ogre_src_sdk\lib\release(debug)
dll位于D:\c\orge\orgeSpace\Ogre_src_sdk\bin\release(debug)

4 代码


FirstOgre.h
  1. #pragma once  
  2.   
  3. #include "resource.h"  
  4. #include "ExampleApplication.h"  
  5.   
  6. class FirstOgre : public ExampleApplication  
  7. {    
  8. protected:    
  9. public:    
  10.     FirstOgre();    
  11.   
  12.     ~FirstOgre();    
  13.   
  14. protected:    
  15.     void createScene(void);  
  16.   
  17. };    

FirstOgre.cpp
  1. #include "stdafx.h"  
  2. #include "FirstOgre.h"  
  3.   
  4. using namespace std;  
  5. FirstOgre::FirstOgre()  
  6. {  
  7.   
  8. }  
  9.   
  10. FirstOgre::~FirstOgre()  
  11. {  
  12.   
  13. }  
  14.   
  15. void FirstOgre::createScene(void)  
  16. {  
  17.     Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head""ogrehead.mesh");  
  18.   
  19.     Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();  
  20.     headNode->attachObject(ogreHead);  
  21.   
  22.     // Set ambient light  
  23.     mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));  
  24.   
  25.     // Create a light  
  26.     Ogre::Light* l = mSceneMgr->createLight("MainLight");  
  27.     l->setPosition(20,80,50);  
  28. }  
  29.   
  30. INT WINAPI WinMain( HINSTANCE hInst, HINSTANCELPSTR strCmdLine, INT )  
  31.   
  32. {  
  33.     cout<<"fuck0"<<endl;  
  34.     FirstOgre app;  
  35.   
  36.     try {  
  37.         app.go();  
  38.     } catch( Ogre::Exception& e ) {  
  39.   
  40.         //MessageBox( NULL, e.getFullDescription().c_str(), "An exception", MB_OK | MB_ICONERROR | MB_TASKMODAL);  
  41.   
  42.     }  
  43.     cout<<"fuck1"<<endl;  
  44.     return 0;  
  45. }  

5 配置工程属性


1 直接把相关输出目录,调试目录设置到sdk目录下

General->Output Directory:设置到SDK目录->bin->release(Debug)
Debugging->Working Directory:设置到SDK目录->bin->release(Debug)
Link->General->Output File:设置到SDK目录->bin->release(Debug)->工程名.exe

2 纯手动,相关目录就用当前工程,不设置到sdk目录

General->Output Directory:使用默认设置$(SolutionDir)$(Configuration)\
Debugging->Working Directory:默认设置为$(ProjectDir),需要修改为$(SolutionDir)$(Configuration)\
Link->General->Output File:这个使用默认配置
这种方法需要将如下文件copy到当前工程的realease(debug)文件夹中


1 修改plugins.cfg 把 Plugin=RenderSystem_Direct3D9这个注释掉,ogre里面自带的是opengl包,不需要d3d的东西,启动后选择d3d和opengl的界面只有opengl选项

2 修改resources.cfg 把media相关的引用路径都改成sdk里面media的路径,这个文件默认是使用的相对路径

3 OIS.dll是独立库,不是源码编译出来的,直接从ogre sdk中copy

4 OgreProperty.dll,Direct3D9.dll在例子程序中没用到,可以去掉

5 cg.dll这个是从源码的D:\c\orge\orgeSpace\ogre_src_v1-8-1\Dependencies\bin\Release文件夹下copy来的,没这个文件会闪退(暂时搞不清这个库在sdk工程中是怎么引用的,动态?待议)



6 编译,运行,选择opengl,然后可以在黑背景下看到一头ogre。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值