清源游民 mailto:gameogre@gmail.com
子系統(tǒng)概覽
Root Object
Root 是程序進(jìn)入點(diǎn),它是一個fa?ade 類,提供了訪問子系統(tǒng)的方便的方法。通過它可以開啟ogre,也可能通過它關(guān)閉ogre。
資源管理
在渲染場景中使用的任何東西都被視為資源。所有的資源最終都被一個單個類對象管理:ResourceGroupManager,它負(fù)責(zé)定位資源,初始化資源(不真正裝載)。
在缺省情況下,Ogre認(rèn)識以下類型的資源:
Mesh: 二進(jìn)制格式,它也可包含 morph 和 pose 動畫數(shù)據(jù)
Skeleton: 可以被Mesh文件引用,也可單獨(dú)使用,包含骨骼層次結(jié)構(gòu)信息,關(guān)鍵幀信息。
Material: 定義了渲染一組幾何體時的渲染狀態(tài),可以被mesh文件引用,也可以手工使用。
GPU 程序:.program 支持HLSL, GLSL,Cg 與低級的 .asm ,這些文件會在任何.material之間被剖析,因此在一個material之中被引用的Gpu程序總是有效的。
Compositor: 與Material很相似,擴(kuò)展名不同.
Font: 用字體定義文件去定義在overlay中使用的字體,擴(kuò)展名 .fontdef
每種資源都有自己的特定的ResourceManager,如,MaterialManager, FontManager。ResourceGroupManager負(fù)責(zé)通過名字查找資源,它不負(fù)責(zé)實(shí)際的內(nèi)存管理任務(wù)。這些任務(wù)是由ResourceManager基類來完成的。ResourceGroupManager允許通過組名來加載,釋放整組資源。
默認(rèn)情況下,Ogre認(rèn)為資源以一個磁盤文件的形式存在。然而,有些類型的資源可以手工管理,當(dāng)前只有mesh, font 有手工資源加載的實(shí)現(xiàn)。其他類型的可以自己實(shí)現(xiàn),Ogre已經(jīng)在它的框架中保留了這種功能。
場景管理
所有的具體實(shí)現(xiàn)都從SceneManager派生而來,程序中常與此類交互。,可以有多個活動的SceneManager。它們用來管理SceneNode, SceneNode可以在場景中被移動。SceneNode也可以有層次結(jié)構(gòu)。
場景實(shí)際內(nèi)容經(jīng)常也Entity實(shí)例的形式存在。它們被Scene Manager創(chuàng)建,MovableObject實(shí)現(xiàn)。一個有效的Entity可以被attach 到SceneNode上面。Entity 經(jīng)常從磁盤上以 mesh文件加載。然后也可以手工創(chuàng)建內(nèi)容對象,如plane.當(dāng)Entity被attach到SceneNode上時,進(jìn)行移動等操作是針對SceneNode的,而不是內(nèi)容對象。
也可以把非內(nèi)容對象(燈,相機(jī)等)attach 到SceneNode上面。
渲染系統(tǒng)與渲染對象
RenderSystem 是Ogre與底層API的接口, RenderTarget 是 渲染窗口與渲染紋理的概括。
Ogre 扶持多個渲染窗口。窗口可以通過Root對象自動、手動地創(chuàng)建,也可能通過RenderSystem創(chuàng)建。
Ogre 管理器
Manager 是一個可以訪問相關(guān)類型對象,管理其生命周期的類。例如,ArchiveManager管理Archive實(shí)現(xiàn)的創(chuàng)建與注冊,訪問注冊的Archive實(shí)現(xiàn)實(shí)例。Root對象創(chuàng)建的副作用之一就是初始化所有ogre Manager對象。
LogManager : 發(fā)送日志信息到輸出流。
ControllerManager: 管理 controllers,后者是基于各種輸入,為別的類產(chǎn)生狀態(tài)值以供使用。
DynLibManager: 管理動態(tài)鏈接庫
PlatformManager: 把抽象的訪問轉(zhuǎn)換成底層硬件與操作系統(tǒng)相關(guān)的細(xì)節(jié)。
CompositorManager: 訪問管理 Compoitor framework.
ArchiveManager: 文件系統(tǒng)目錄,ZIP文件
ParticleSystemManager: 粒子系統(tǒng),發(fā)射器,影響器(affector)
SkeletonManager:? 允許同名的skeleton對象重用
MeshManager :? 管理mesh, 允許同名mesh重用
HighLevelGpuProgramManager: 維護(hù),加載,編譯高級GPU程序
GpuProgramManager: 維護(hù)低級GPU程序,把編譯的高級GPU程序轉(zhuǎn)為匯編
ExternalTextureSourceManager:? 管理外部紋理源類實(shí)例,如視頻流
FontManager:? 管理Overlay中使用的字體
ResourceGroupManager: 加載,生命期管理,所有注冊的程序資源
OverlayManager: 加載,創(chuàng)建,2D Overlay 類實(shí)例
HardwareBufferManager: 管理共享硬件緩沖, 頂點(diǎn)緩沖,像素緩沖,索引緩沖等。
TextureManager: 管理紋理
總結(jié): 這一章無意覆蓋關(guān)于Ogre的所有東西,只說明了一些普遍需要的Ogre對象,和一些不太常打交道的ogre 對象。
?