环境: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 新建win32工程
也可使用空工程,需要做些配置,Linker->System->SubSystem:Windows (/SUBSYSTEM:WINDOWS)
2 引入头文件
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 引入库文件
- kernel32.lib
- user32.lib
- gdi32.lib
- winspool.lib
- shell32.lib
- ole32.lib
- oleaut32.lib
- uuid.lib
- comdlg32.lib
- advapi32.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreMain.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OIS.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgrePaging.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreTerrain.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreProperty.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\lib\release\OgreRTShaderSystem.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_thread-vc100-mt-gd-1_49.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_date_time-vc100-mt-gd-1_49.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_date_time-vc100-mt-1_49.lib
- D:\c\orge\orgeSpace\OgreSDK_vc10_v1-8-1\boost\lib\libboost_thread-vc100-mt-1_49.lib
4 代码
- #pragma once
- #include "resource.h"
- #include "ExampleApplication.h"
- class FirstOgre : public ExampleApplication
- {
- protected:
- public:
- FirstOgre();
- ~FirstOgre();
- protected:
- void createScene(void);
- };
FirstOgre.cpp
- #include "stdafx.h"
- #include "FirstOgre.h"
- using namespace std;
- FirstOgre::FirstOgre()
- {
- }
- FirstOgre::~FirstOgre()
- {
- }
- void FirstOgre::createScene(void)
- {
- Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
- Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode();
- headNode->attachObject(ogreHead);
- // Set ambient light
- mSceneMgr->setAmbientLight(Ogre::ColourValue(0.5, 0.5, 0.5));
- // Create a light
- Ogre::Light* l = mSceneMgr->createLight("MainLight");
- l->setPosition(20,80,50);
- }
- INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
- {
- cout<<"fuck0"<<endl;
- FirstOgre app;
- try {
- app.go();
- } catch( Ogre::Exception& e ) {
- //MessageBox( NULL, e.getFullDescription().c_str(), "An exception", MB_OK | MB_ICONERROR | MB_TASKMODAL);
- }
- cout<<"fuck1"<<endl;
- return 0;
- }