平臺: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