环境: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;
}