Ogre 配置

环境: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:corgeorgeSpace
2 设置环境变量,变量名:ORGE_HOME  变量值D:corgeorgeSpaceOgreSDK_vc10_v1-8-1
3 解压Dependencies得到Dependencies文件夹啊,放到D:corgeorgeSpaceOgreSDK_vc10_v1-8-1中
4 进入D:corgeorgeSpaceOgreSDK_vc10_v1-8-1Dependenciessrc打开vs2010.sln,分别在Released,Debug下进行编译(vs2010->Build->Configuration Manger中切换)
5  进入D:corgeorgeSpaceOgreSDK_vc10_v1-8-1(注意不是进入D:corgeorgeSpaceOgreBuild),打开Ogre.sln,编译工程,把SampleBrowser设置为默认启动项(默认是AllBuild为启动项)。运行即可,运行时选择opengl。


安装工程向导


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





源码编译

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



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


手动(用源码)构建工程

1 新建win32工程

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


2 引入头文件

D:corgeorgeSpaceOgreSDK_vc10_v1-8-1includeOGRE;
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1includeOIS;
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1include;(include下没有.h文件但是代码里有的引用是带有文件夹目录的比如<OIS/OIS.h>,所以不引include会出问题)
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oost;

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

源码的头文件位于,cmake编译前的D:corgeorgeSpaceogre_src_v1-8-1OgreMaininclude

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

3 引入库文件

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
eleaseOgreMain.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
eleaseOIS.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
eleaseOgrePaging.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
eleaseOgreTerrain.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
eleaseOgreProperty.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1lib
eleaseOgreRTShaderSystem.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_thread-vc100-mt-gd-1_49.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_date_time-vc100-mt-gd-1_49.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_date_time-vc100-mt-1_49.lib
D:corgeorgeSpaceOgreSDK_vc10_v1-8-1oostliblibboost_thread-vc100-mt-1_49.lib

部分库可能不是必须的,没做详细区分,这里用的sdk的库文件,也可用源码生成的库
源文件编译后的
lib位于D:corgeorgeSpaceOgre_src_sdklib elease(debug)
dll位于D:corgeorgeSpaceOgre_src_sdkin elease(debug)

4 代码


FirstOgre.h
#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;
}

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:corgeorgeSpaceogre_src_v1-8-1DependenciesinRelease文件夹下copy来的,没这个文件会闪退(暂时搞不清这个库在sdk工程中是怎么引用的,动态?待议)



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


原文地址:https://www.cnblogs.com/nafio/p/9137721.html