• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            李錦俊(mybios)的blog

            游戲開發 C++ Cocos2d-x OpenGL DirectX 數學 計算機圖形學 SQL Server

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              86 Posts :: 0 Stories :: 370 Comments :: 0 Trackbacks

            公告

            QQ:30743734
            EMain:mybios@qq.com

            常用鏈接

            留言簿(16)

            我參與的團隊

            最新隨筆

            搜索

            •  

            積分與排名

            • 積分 - 370171
            • 排名 - 67

            最新評論

            閱讀排行榜

            評論排行榜

            Ogre的Manager真是多啊,就象個官僚公司,干事的沒幾個,一堆的Manager,個個丫還都是Singleton.說自己是Singleton卻又public構造函數,讓人來new它.在第1次被new的時候,偷偷地將this賦給靜態成員ms_Singleton,第2次new它就要assert喊冤了,當然這都是叫Singleton的模板基類的那個構造函數干的(典型的小人行徑,見不得光).Manager一多,本來不復雜的事,也變得復雜了.

            1.LogManager
            a.全局單體LogManager組合Log指針Map集合,控制有多個Log對象,1個Log對象表達對一個Log文件的輸入(老一套).
            b.同時LogManager維護1個當前默認主事的Log對象mDefaultLog,以展現Log對象功能而隱藏自己實際是個Manager的身份(邀功自賞,其心可誅).
            c.維護一個監控者接口LogListener列表,以履行作為一個Manager受外部監督的職責(實為推清責任).

            2.DynLibManager
            a.全局單體DynLibManager組合DynLib*指針Map集合,控制多個DynLib對象,1個Dynlib表達對動態庫的裝載和卸載(典型的官僚主義,人浮于事,這點屁事都要有Manager).

            3.ResourceGroupManager
            ? a.全局單體ResourceGroupManager組合ResourceManager指針Map?Manager的Manager,靠,好大的官)
            ? b.一上任就安插了個親信Manager,建立個叫General的ResourceManager.

            4.SceneManagerEnumerator
            ? a.連它都是系統單體,一個迭代器,小人得志啊,不說了,它可管著一堆SceneManager,惹不起.
            ? b.一開始就安排了什么事都作不了的SceneManager(基類)作默認SceneManager,大事小事都是它,室內室外一手包.

            5.一堆中層干部,一堆的MaterialManager,MeshManager,ParticleSystemManager,SkeletonManager......,都是Singleton,有的還是ResourceManager的門生,一開始都干了2件事.
            a.定名分:向ResourceGroupManager注冊說自己是某方面的Manager,_registerResourceManager.
            b.要資源:向ResourceGroupManager要求控制對某種腳本的解析_registerScriptLoader(就是瓜分資源).
            c.有個OverlayManager,ArchiveManager最牛,手下還有幾個工廠給它干活,無非是自己作不了,又推給下級.

            6.一堆插件外勞,開始加載,這些外勞到系統中來當然要注冊.

            7.透明實體mTransparentObjects按z序排序,不透明實體按material分組.

            8.我一開始認為Materail是個很聰明的概念,后來才發現上當受騙了,它管理了mTechniques數組,而Techniche管理了mPasses數組(Multipass render),最后實質的內容在Pass類中,Pass類表達了一個渲染的環境.由于這個官僚系統實在太官僚,所以按對象每次渲染是不可接受的(跨部門合作太多,相互扯皮),渲染狀態切換頻繁,效率極低,透明渲染z序混亂.所以需要按Materail分組和z軸分序,而RenderSystem的最重要方法接受RenderOperation參數.

            9.Pass和RenderOperation是兩位最能干的勞動人民,都是受人管制的對象,整個系統的靈魂和核心,Pass封裝了最重要的渲染狀態(即進行glDrawXXX時管線所處的狀態,著色系統),RenderOperation封裝了帶紋理幾何渲染操作(glDrawElements幾何系統),兩者構成一個完整的渲染.即,先,調用SceneManager的setPass(在其中其仍將調用RenderSystem以設置管線狀態),再,調用RenderSystem的_render.

            10.SceneManager的虛方法_findVisibleObjects是場景管理的核心,由它將Renderable分組,分透明和不透明分送入不同的渲染隊列,Renderable組合RenderOperation和Pass(但出頭的都是Materail),然后SceneManager對之排序,整理,送入RenderSystem渲染.

            11.SceneManager的_renderScene是基本渲染核心,它完成若干任務
            ?? a.幀動畫驅動_applySceneAnimations
            ?? b.場景圖更新_updateSceneGraph
            ?? c.渲染隊列更新,_findVisibleObjects更新主場景,_queueOverlaysForRendering更新上層主界面,_queueSkiesForRendering更新天空盒,最后_renderVisibleObjects.

            12.渲染隊列RenderQueue,維護std::map<RenderQueueGroupID, RenderQueueGroup*>對象,以表達其內部的多個方面(世界,前景,背景)的渲染分隊列.RenderQueueGroup再往下分std::map<ushort, RenderPriorityGroup*, std::less<ushort> >,以表達其(如前景)內部按ushort優先級維護渲染分隊列.RenderPriorityGroup維護一個mTransparentPasses,若干個SolidRenderablePassMap.

            posted on 2006-11-19 08:40 李錦俊(mybios) 閱讀(3157) 評論(8)  編輯 收藏 引用 所屬分類: 數學、幾何和圖形學

            Feedback

            # re: 【轉貼】Ogre的官僚主義批判 2007-02-28 18:17 王一偉
            貌似看帖子的人都沒研究過OGRE,呵呵,不過現在模仿OGRE結構寫的引擎還是很多 呵呵  回復  更多評論
              

            # re: 【轉貼】Ogre的官僚主義批判 2007-06-12 09:59 zdl1016
            對OGRE才研究了一個月,不敢妄加評論。  回復  更多評論
              

            # re: 【轉貼】Ogre的官僚主義批判[未登錄] 2007-06-12 12:51 FlyingBear
            主要是OGRE的Manager大都有很復雜的初始化,用一般的singleton實現靜態初始化不容易控制順序  回復  更多評論
              

            # re: 【轉貼】Ogre的官僚主義批判 2008-05-20 15:30 Welbon
            呵呵,LZ 這篇文章很有意思  回復  更多評論
              

            # re: 【轉貼】Ogre的官僚主義批判[未登錄] 2009-02-10 13:17 hunter
            有點意思  回復  更多評論
              

            # re: 【轉貼】Ogre的官僚主義批判 2009-02-20 11:35 geng
            呵呵,一針見血  回復  更多評論
              

            # hyperc 2010-06-05 17:26 hyperc
            最惡心的引擎之一 ogre 掛了不知道多少依賴庫 連boost都要給你強制掛上  回復  更多評論
              

            # re: 【轉貼】Ogre的官僚主義批判[未登錄] 2011-01-12 14:25 111
            占在巨人肩膀上,難道你要自己去實現boost的東西?  回復  更多評論
              

            中文字幕日本人妻久久久免费| 欧美午夜A∨大片久久 | 久久久久成人精品无码中文字幕| 久久久无码精品亚洲日韩蜜臀浪潮 | 国产免费久久精品丫丫| 要久久爱在线免费观看| 久久精品国产亚洲一区二区| 久久亚洲天堂| 久久久久久狠狠丁香| 亚洲午夜久久久| 久久精品成人免费观看97| 欧洲精品久久久av无码电影| 日本国产精品久久| 久久91精品国产91久久小草| 亚洲欧美成人综合久久久| 久久婷婷五月综合色99啪ak| 久久久青草久久久青草| 麻豆AV一区二区三区久久| 区久久AAA片69亚洲| 久久久久久av无码免费看大片| 99久久免费国产精精品| 伊人久久大香线蕉av不卡| 亚洲а∨天堂久久精品9966| 品成人欧美大片久久国产欧美| 精品久久久久久亚洲精品| 亚洲国产精品无码久久| 亚洲AV无码一区东京热久久| 久久久久久亚洲精品影院| 日批日出水久久亚洲精品tv| 久久人人爽人人澡人人高潮AV| 精品久久国产一区二区三区香蕉| 2020最新久久久视精品爱| 亚洲国产精品热久久| 国产99久久九九精品无码| 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 国产精品久久免费| 99久久人妻无码精品系列蜜桃| 97r久久精品国产99国产精| 精品国产91久久久久久久 | 国产精品美女久久久| 国产精品久久久久久一区二区三区|