- RenderSystem:是用來發送渲染操作的系統。它是一個抽象類,而另外擁有不同的實現。(OpenGL, DirectX)。
- SceneManager:除Root對象外最重要的ORGE部件。它創建和管理攝象機,可移動物體,燈光和材質,以及不可移動的場景的材質(如天空,大地)。SceneManager保存了各種物體的列表,以便處理物體之間的關係。應用程序無須爲之操心。SceneManager還把場景發送到RenderSystem裏進行渲染。它確定哪些物體需要繪製,生成一個場景,發送到渲染系統。SceneManager擁有許多子類,因爲如何選擇物體進行渲染的算法十分多樣。缺省的SceneManager功能十分低下,而某些SceneManager子類功能十分強大。例如:BSP(Binary Space Partition)SceneManager處理一個大型建築。
- ResourceManager:是一些管理資源的類的基類。“資源”指的是貼圖,mesh和地圖。TextureManager是管理貼圖的ResourceManager。MeshManager是管理mesh的ResourceManger。
-
Mesh對象
Mesh對象表示出一種不連續的模型,一組自包含的遠小於世界尺寸的幾何物體。Mesh對象通常用來表現可移動的小型物體,而不是不可移動的背景。
Mesh是一種資源,可被MeshManager管理。它們通常被保存在文件裏,以”.mesh”爲擴展名。”.mesh”文件可以通過一個建模工具。
MeshManager::createManual方法可以創建一個Mesh。Entity對象
Entity是場景的一個可移動物體的實例。它可以是車,人,狗等等。它不必固定在一個位置上。
Entity是不連續的Mesh的集合。多個Entity也可以由同一個Mesh所構成,如果你希望的話。
使用SceneManager::createEntity方法可創建一個Entity,參數爲它的名字和它所使用的Mesh的文件名。通過MeshManager,我們能保證同一個Mesh只裝載一次。
Entity如不加入到SceneNode中,就不認爲它是場景的一部分。通過加入SceneNode,Entity能表現出複雜的繼承行爲。可以通過修改SceneNode的位置來影響一組Entity。
一個Mesh帶來一組材質的定義。你可以在原來基礎上改變Mesh的材質,因爲每個Mesh由子Mesh單元組成。子Mesh單元分別存儲着Mesh的各種材質。通過更換子Mesh,就可以改變原有Mesh的外觀。
Entity也是如此,通過更換子Entity,也可改變原有Entity的外觀。Materials對象
材質對象控制物體在渲染系統中如何顯示,它包括顏色,亮度等等。SceneManager管理所有的材質。當每個材質被加入到SceneManager時,它們都有一系統缺省屬性。- 周圍的反射光(白色)
- 漫反射(白色)
- emmissive(黑色:無)
- 亮度(無)
- 沒有貼圖層,也就沒有貼圖
- SourceBlendFactor = SBF_ONE, DestBlendFactor = SBF_ZERO (不透明)
- 開啓深度緩衝檢查
- 開啓深度緩衝寫
- 深度緩衝比較 = CMPF_LESS_EQUAL
- 周圍光線顏色 = ColourValue(0.5, 0.5, 0.5) (半灰)
- 開啓動態光線
- Gourad 陰影模式
- Bilinear texture filtering
通過對SceneManager::getDefaultMaterialSettings()的返回值進行更改,可以改變這些缺省值。使用方法SubEntity::setMaterialName()創建一個新的材質,再把一個新的子Entity連接上去。Overlays
Overlays是用來顯示HUD的,如HP血槽。它可以是2維或3維形式。2維的用於顯示HUD,3維的可用來表示特殊效果如雨雪等。用 SceneManager::createOverlay方法可以創建兩種overlay。你也可用”.overlay”腳本定義它們。 Overlay::setZOrder()方法決定了多個overlay的前後順序。- 創建2維overlay
- 使用OverlayElement類。
- 使用OverlayContainer,後者是前者的容器。
- 使用GuiManager類,使用GuiManager::createOverlayElement方法創建一2維元素到一個overlay。
- 例子:GuiManager::getSingleton().createOverlayElement("Panel", "myNewPanel");
- 引自:http://bbs.gamedev.csdn.net/Web/54201/ShowPost.aspx
OGRE架構
Root:是ORGE核心系統的一部分,必須在所有ORGE對象產生之前初始化,並在所有ORGE對象銷燬之後銷燬,用來配置系統。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.