ogre研究之第一个程序(二)
接續(一)
首先,我們要分析的就是Root類,使用Ogre的程序所需要作的第一件事情就是實例化一個Root對象。如果沒有這個對象,你就無法調用(除了日志管理以外)的任何一個功能。Root類的構造函數接受一些符串對象的參數,這些字符代表著不同作用的文件名稱。
上面列出了一些不同的方法來創建Root實例,這里面任何的方法都能單獨的正確執行。參數也是系統所默認的值(“plugins.cfg”, “ogre.cfg”, “ogre.log”——當你沒有填寫參數的時候,系統就認為采用了默認的這些值)。
plugins.cfg:插件,Ogre中所謂的插件就是符合Ogre插件接口的代碼模塊,比如場景管理(SceneManager)插件和渲染系統(RenderSystem)插件等。在啟動的Ogre時候,他會載入plugins.cfg配置文件來查看有哪些插件可以被使用。下面是一個plugins.cfg文件例子
其中PluginFolder用于定義這些插件存在的位置(路徑),? 這里使用“.”,表示需要在“\”或者“/”(即根目錄)。在某些平臺上可以不使用“.”直接使用""(空白),ogre照樣會在“\”或者“/”中去找。
而Plugin則說明了有哪些插件可以使用,但是需要注意,這些插件都沒有后綴名。
這里需要注意:在“=”兩邊不能加入空格或者 Tab字符。
ogre.cfg則是一個屬性配置文件,主要保存用戶自定義的一些屬性,即下圖所示的界面的一些屬性。
文件如下:
相信這里就不用多解釋,大家都明白了。
Ogre.log :日志文件,用于輸出一些調試信息等,比如下代碼:
就會在 Ogre.log文件中輸出"*** Initializing OIS ***"信息。
另外需要說明得就是FrameListener接口了,當Ogre渲染每一幀的開始和結束的時候會回調FrameListener接口的方法,其中主要包括如下兩個渲染方法。
所以我們就可以根據需要來實現這兩個方式,實現渲染。?
注意:在新的版本中frameRenderingQueued方法基本上取代了frameStarted,所以本例中我們就是用了frameRenderingQueued,一般在這個函數中都需要檢測各種輸入設備的情況,以進行相應的處理。
最后,當我們在程序中調用mRoot->startRendering();方法時,就告訴ogre,我們需要開始渲染了。ogre就會開始渲染。也正是ExampleApplication類中的go方法,所做的,初始化(setup)完成之后就開始渲染(mRoot->startRendering())。
之所以有了這兩個類,上一篇中我們才可以不寫任何代碼就可以構建一個窗口,那么本節內容,我們要顯示模型當然就很簡單了。
直接在OgreDemo1類的createScene方法中來實現,
1:設置環境光,首先需要為整個場景設置環境光,這樣才可以看到要顯示的內容,通過調用setAmbientLight函數并指定環境光的顏色就可以做到這些。指定的顏色由紅、綠、藍三種顏色組成,且每種色數值范圍在 0 到 1 之間。
2:創建一個 Entity (物體),通過調用 SceneManager 的 createEntity 方法來創建
變量 mSceneMgr 是當前場景管理器的一個對象,createEntity 方法的第一個參數是為所創建的實體指定一個唯一的標識,第二個參數 "robot.mesh" 指明要使用的網格實體,"robot.mesh" 網格實體在 ExampleApplication 類中被裝載。這樣,就已經創建了一個實體。
3:還需要創建一個場景節點來與它綁定在一起。既然每個場景管理器都有一個根節點,那我們就在根節點下創建一個場景節點。
首先調用場景管理器的 getRootSceneNode 方法來獲取根節點,再使用根節點的 createChildSceneNode 方法創建一個名為 "RobotNode" 的場景節點。與實體一樣,場景節點的名字也是唯一的。?
4:最后,將實體與場景節點綁定在一起,這樣機器人(Robot)就會在指定的位置被渲染:
ok,現在編譯運行你的程序,就可以看到我們偉大的機器人界面了。?
最后說一下,在創建Root對象時的文件一般會和程序最后的可執行文件在同一目錄(因為有人說找不到這些文件)。祝你成功!
補充一下:?
需要將sdk下的media文件夾拷貝到該項目目錄下,因為里面存放了一些資源文件,本文中的機器人模型也在其中。
本文轉自 yarin 51CTO博客,原文鏈接:http://blog.51cto.com/yarin/382510,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的ogre研究之第一个程序(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]vc中socket编程步骤
- 下一篇: MySQL Study之--Percon