OGRE 1.9 的第一个程序(OGRE HelloWorld程序)

 

平台:win7, VS2010

 

先看运行结果吧:

 

1. 安装OGRE

下载OGRE SDK 1.9,解压,放在你喜欢的地方,在OGRE SDK文件加下创建“OGRE_HOME.bat.bat”文本文件,添加如下脚本:

setx OGRE_HOME %CD%

双击运行“OGRE_HOME.bat.bat”,该操作定义环境变量OGRE_HOME值为OGRE SDK目录,该环境变量将在VC++工程中使用。

 

2. 下载BaseApplication

到这个地方下载Tutorial Framework 1.9 - (Windows Line-endings):

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Ogre+Wiki+Tutorial+Framework

这是OGRE为入门者准备的基本示例程序,给我们写好了初始化OGRE的代码(BaseApplication.cpp, BaseApplication.h)。

 

3. 创建VC++工程

step 1:控制台项目(空项目),将上一节下载的BaseApplication.cpp, BaseApplication.h拷贝到项目文件夹里,并添加到项目中。添加新源文件main.cpp,main.cpp中加入如下代码:

 1 #include "BaseApplication.h"
 2 
 3 class MyClass : public BaseApplication
 4 {
 5 public:
 6     MyClass(void) { }
 7     virtual ~MyClass(void) { }
 8 protected:
 9     virtual void createScene(void);
10 };
11 
12 void MyClass::createScene(void)
13 {
14     // shadow
15     mSceneMgr->setShadowTechnique(Ogre::SHADOWTYPE_STENCIL_ADDITIVE);
16     mSceneMgr->setAmbientLight(Ogre::ColourValue(0.2f, 0.2f, 0.2f));
17 
18     // light and light sphere
19     Ogre::Light* pointLight1 = mSceneMgr->createLight("pointLight1");
20     pointLight1->setType(Ogre::Light::LT_POINT);
21     pointLight1->setDiffuseColour(Ogre::ColourValue::White);
22     pointLight1->setSpecularColour(Ogre::ColourValue::White);
23 
24     Ogre::Entity* sphereEnt = mSceneMgr->createEntity("MyEntity", "sphere.mesh");
25     Ogre::SceneNode* lightNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("LightNode");
26     lightNode->attachObject(sphereEnt);
27     lightNode->setScale(0.1f,0.1f,0.1f);
28     sphereEnt->setMaterialName("BaseWhiteNoLighting");
29 
30     Ogre::Vector3 lightPosition(0,500,150);
31     lightNode->setPosition(lightPosition);
32     pointLight1->setPosition(lightPosition);
33 
34     // Ninja
35     Ogre::Entity* entNinja = mSceneMgr->createEntity("Ninja", "ninja.mesh");
36     entNinja->setCastShadows(true);
37     mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entNinja);
38 
39     // ground
40     Ogre::Plane plane(Ogre::Vector3::UNIT_Y, 0);
41     Ogre::MeshManager::getSingleton().createPlane("ground", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME,
42         plane, 1500, 1500, 20, 20, true, 1, 5, 5, Ogre::Vector3::UNIT_Z);
43     Ogre::Entity* entGround = mSceneMgr->createEntity("GroundEntity", "ground");
44     mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(entGround);
45     entGround->setMaterialName("Examples/Rockwall");
46     entGround->setCastShadows(false);
47 
48     // set camera position
49     mCamera->setPosition(100,200,-300);
50     mCamera->lookAt(0,100,0);
51 }
52 
53 int main(int argc, char *argv[])
54 {
55     // Create application object
56     MyClass app;
57 
58     try{
59         app.go();
60     }
61     catch( Ogre::Exception& e ){
62         std::cerr << "An exception has occured: " <<
63             e.getFullDescription().c_str() << std::endl;
64     }
65     return 0;
66 }

添加好之后,工程是这个样子的:

step 2:添加包含目录和库目录

项目上右键属性“配置属性 >> VC++目录 >> 包含目录”所有配置下添加如下项:

$(OGRE_HOME)\include
$(OGRE_HOME)\include\OIS
$(OGRE_HOME)\include\OGRE
$(OGRE_HOME)\include\OGRE\Overlay
$(OGRE_HOME)\boost

“配置属性 >> VC++目录 >> 库目录”所有配置下添加如下项::

$(OGRE_HOME)\lib\$(Configuration)
$(OGRE_HOME)\boost\lib

现在知道环境变量OGRE_HOME的用途了吧。

step 3:添加库文件

项目上右键属性“配置属性 >> 链接器 >> 输入 >> 附加依赖项”Debug配置下添加如下项:

OgreMain_d.lib
OIS_d.lib
OgreOverlay_d.lib

Release配置下添加如下项:

OgreMain.lib
OIS.lib
OgreOverlay.lib

这个时候编译项目已经可以成功编译了,但运行不了,因为没有运行环境(.dll文件,资源文件)。在Release下编译,将编译出的helloOGRE.exe文件拷贝到OGRE_HOME/bin/Release下,双击运行,报错如下:

此时这是因为没有安装D3D,你可以到MSDN下载D3D安装,我们这里用OpenGL(OGRE同支持OpenGL和Direct3D):将OGRE_HOME/bin/Release/plugins.cfg文件的第7, 8两行注释:

Plugin=RenderSystem_Direct3D9
Plugin=RenderSystem_Direct3D11

修改为

# Plugin=RenderSystem_Direct3D9
# Plugin=RenderSystem_Direct3D11

再运行还是不行,通过分析OGRE_HOME/bin/Release/Ogre.log(GORE程序运行产生的日志文件)发现是资源解析的问题。因为之前用OGRE 1.8.1时没问题,可以用OGRE SDK 1.8.1的资源包,具体就是OGRE_HOME/media整个文件夹和OGRE_HOME/bin/Release/resources.cfg文件替换为OGRE SDK 1.8.1(再去官网下载吧)中的相应项,就可以运行了。用“WASD”移动相机,鼠标改变视角,Esc键退出程序。

step 4:运行环境配置

因为不想每次运行程序都要手动拷贝,也不想改变OGRE_HOME目录下的文件。这里采取的策略是:将OGRE_HOME/bin和OGRE_HOME/media这两个文件夹都拷贝到VS解决方案文件夹下(OGRE 1.9的OGRE_HOME/bin和OGRE 1.8.1的OGRE_HOME/media),当然bin/debug和bin/release下的plugins[_d].cfg和samples[_d].cfg还是要改,见上一步。工程目录结构目前是这样的:

另外还要配置工程属性,修改生成目标位置:

项目上右键属性“配置属性 >> 常规 >> 输出目录”所有配置下修改为“$(SolutionDir)bin\$(Configuration)\”:

“配置属性 >> 调试 >> 工作目录”所有配置下修改为“$(TargetDir)”:

 

4. 问题解决

如果程序还是运行不起来,欢迎给我留言。另外可以查看/bin/Release/Ogre.log(Release版本),搜索“error”,查看错误信息。

 

5. 参考文献

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Setting+Up+An+Application+-+Visual+Studio

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Basic+Tutorial+1&structure=Tutorials

   

posted on 2014-02-27 22:37  liangliangh  阅读(4422)  评论(0编辑  收藏  举报

导航