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

 

平臺:win7, VS2010php

 

先看運行結果吧:app

 

1. 安裝OGREspa

下載OGRE SDK 1.9,解壓,放在你喜歡的地方,在OGRE SDK文件加下建立「OGRE_HOME.bat.bat」文本文件,添加以下腳本:debug

setx OGRE_HOME %CD%

雙擊運行「OGRE_HOME.bat.bat」,該操做定義環境變量OGRE_HOME值爲OGRE SDK目錄,該環境變量將在VC++工程中使用。3d

 

2. 下載BaseApplication調試

到這個地方下載Tutorial Framework 1.9 - (Windows Line-endings):日誌

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

這是OGRE爲入門者準備的基本示例程序,給咱們寫好了初始化OGRE的代碼(BaseApplication.cpp, BaseApplication.h)。blog

 

3. 建立VC++工程ip

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

相關文章
相關標籤/搜索