久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

高層游戲引擎——基于OGRE所實(shí)現(xiàn)的高層游戲引擎框架(4)

 sofes 2011-03-20

高層游戲引擎——基于OGRE所實(shí)現(xiàn)的高層游戲引擎框架(4) 收藏

第二部分 OGRE 圖形引擎的基本構(gòu)成

第二部分所需所有圖片

 

窗體底端

  OGRE(Object-oriented Graphics Rendering Engine,,面向?qū)ο蟮膱D形渲染引擎),是國(guó)際上比較知名的開(kāi)源圖形渲染引擎,。OGRE是用C++開(kāi)發(fā)的面向?qū)ο笄沂褂渺`活的3D引擎,。它的目的是讓開(kāi)發(fā)者能更方便和直接地開(kāi)發(fā)基于3D硬件設(shè)備的應(yīng)用程序或游戲。引擎中的類(lèi)庫(kù)對(duì)更底層的系統(tǒng)庫(kù)(如:Direct3D和OpenGL)的全部使用細(xì)節(jié)進(jìn)行了抽象,,并提供了基于現(xiàn)實(shí)世界對(duì)象的接口和其它類(lèi),。

  OGRE系統(tǒng)主要包括:Render系統(tǒng)和Render插件、Material系統(tǒng)和Material腳本,、Entity(主要是物件系統(tǒng)),、GUI系統(tǒng)和Overlay腳本、Texture和圖片解碼器,、Archive系統(tǒng)和文件解碼器,、Scene插件(主要是地形系統(tǒng))、粒子系統(tǒng),、日志,、Dll動(dòng)態(tài)導(dǎo)入和插件系統(tǒng)等等。而最后所有的系統(tǒng)全部歸一個(gè)總管管理,,這個(gè)總管就是Ogre::Root,。

下圖是Root的關(guān)聯(lián)關(guān)系, Root是整個(gè)OGRE的核心部分,,它關(guān)聯(lián)著其他所有的組件,,并把這些組件封裝其中。

圖2-2 OGRE核心部分框圖(引用自O(shè)GRE的開(kāi)發(fā)框圖)
圖2-2是整個(gè)OGRE的核心成分框圖,。下面我們引用Mage小組的《Ogre使用指南》里對(duì)這個(gè)框圖的描述:


Root:整個(gè)Ogre系統(tǒng)的入口點(diǎn)和管理器,,它必須第一個(gè)被創(chuàng)建,最后一個(gè)被消毀。通過(guò)Root對(duì)象你可以配置系統(tǒng),,還可以獲得系統(tǒng)內(nèi)的其它對(duì)象,。
RenderSystem:3D API的抽象層,它負(fù)責(zé)設(shè)置所有的渲染屬性,,并調(diào)用3D API執(zhí)行渲染操作,。
SceneManager:場(chǎng)景管理器,它負(fù)責(zé)組織組織場(chǎng)景,,包括場(chǎng)景中Material,、Light、Movable Object(Entity)和場(chǎng)景本身,。
Material:定義場(chǎng)景中幾何體的表面屬性,。
Entity:場(chǎng)景中的可運(yùn)動(dòng)物體。
SceneNode:代表位置和方向,,Attach到SceneNode上的Entity可以繼承其位置和方向。場(chǎng)景中的SceneNode以樹(shù)的形式來(lái)組織,。
Camera:場(chǎng)景中的視點(diǎn),。


  使用OGRE很簡(jiǎn)單,因?yàn)镺GRE提供了自己的Application Framework,,如果有興趣可以參考一下附錄里面一段使用OGRE Application Framework的標(biāo)準(zhǔn)代碼:(示例來(lái)自O(shè)GRE自帶的地形Demo:Terrain)

  但細(xì)細(xì)分起來(lái)使用Application Framework開(kāi)發(fā),,需要寫(xiě)的代碼主要還是集中在下面三個(gè)方面:初始化、處理輸入以及運(yùn)行時(shí)幀循環(huán),。大部分時(shí)候,,我們所需要做的主要是初始化和輸入處理,而對(duì)于幀循環(huán)幾乎不必要改動(dòng),。

  既然Application Framework本身封裝的就這么好,,為什么不能直接使用Application Framework來(lái)做游戲呢?來(lái)看看Application Framework里面都是些什么吧:

圖2-3 Ogre Application Framework 工程

  我們從中可以看到高層的封裝包括有:一些物件類(lèi)(AppBox,、AppBall等),、物件碰撞檢測(cè)支持(ODE,一個(gè)國(guó)際知名的開(kāi)源物理引擎),、以及一個(gè)簡(jiǎn)單到不能再簡(jiǎn)單的RefAppWorld(這里面的World類(lèi)似于我們前面討論的場(chǎng)景系統(tǒng)),,這種封裝很難以滿(mǎn)足我們的要求。不過(guò)看來(lái)OGRE的作者似乎也察覺(jué)到了OGRE本身的場(chǎng)景系統(tǒng)不能滿(mǎn)足需要,,因此在Application Framework中又重新構(gòu)建了我們意義上的場(chǎng)景系統(tǒng),,這種場(chǎng)景系統(tǒng)對(duì)于單個(gè)場(chǎng)景的演示和Demo是夠用了,但是在游戲普遍要求的多場(chǎng)景,、甚至是大量場(chǎng)景前面,,這種構(gòu)架似乎又缺乏說(shuō)服力。而且把ODE和OGRE放在這一層次硬性結(jié)合實(shí)際效果也并不好,經(jīng)常出現(xiàn)碰撞檢測(cè)錯(cuò)誤導(dǎo)致穿墻,、撞飛的尷尬場(chǎng)面,。曾經(jīng)我們準(zhǔn)備在其基礎(chǔ)之上建立自己的游戲框架,最后發(fā)現(xiàn)越來(lái)越陷入到OGRE為我們框死的條框之中,。畢竟OGRE是為了OGRE開(kāi)發(fā)者的目的而開(kāi)發(fā)的,,不是為了游戲而開(kāi)發(fā)的,更不是為了我們的目的而開(kāi)發(fā)的,。

  現(xiàn)在,,我們準(zhǔn)備徹底拋棄這個(gè)構(gòu)架,轉(zhuǎn)而制作自己新的構(gòu)架,,來(lái)親手實(shí)踐前面純理論推導(dǎo)的“高層引擎”,。當(dāng)然,我們用的思路也并不超前,,同樣是Application Framework中已經(jīng)利用過(guò)的“場(chǎng)景=地形+物件”思路,,但是我們的構(gòu)架需要考慮到更多的情況,因?yàn)槲覀兯龅挠螒虿⒉恢皇?#8220;第一第二世界”(場(chǎng)景),,同時(shí)它還包括“第三世界”(規(guī)則),,這一點(diǎn)是OGRE沒(méi)有重點(diǎn)支持的。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶(hù)發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買(mǎi)等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多