CEGUI 0.7, 你值得擁有

來源:互聯網
上載者:User

         最近翻看CEGUI代碼的時候發現,CEGUI 0.7在構架上比之前版本有了裡程碑式的提升。

         每當需要重繪時,CEGUI都會提供給渲染器一個隊列,其中包含了所有已經排序好的待渲染單位。CEGUI 0.7對這個隊列進行了巨大改善。

         CEGUI 0.6及此前版本中,渲染隊列的填充方式如:

圖1 CEGUI 0.6及以前版本渲染隊列填充方式

         所有的CEGUI視窗都將本視窗中需要渲染的圖片,填充到CEGUI系統的大渲染隊列裡。如果有一個CEGUI視窗需要更新,那麼整個大隊列都需要清空並被重新填充,也就是所有視窗都需要再次將自己的圖片往大隊列中投放一遍,這會導致幀數驟降。

         也許你會注意到中CEGUI Windows層和大隊列層中間還有一個緩衝層RenderCache,它是CEGUI為避免視窗無意義的重複重新整理所提供的一個方案,也就是說,如果一個視窗不需要重新整理,它對應的RenderCache緩衝就不需要改變。在實際應用中,這個方案收效並不明顯。如果一個視窗包含有文字,那麼這些文字中的每一個字元,都會通過字型類裡的一張映射表,最終映射為一張圖片,被填充到大隊列裡,即每次填充時都需要一個查詢映射表的過程,這個查詢過程並不是發生在視窗到RenderCache層之間,而是發生在RenderCache層到大隊列層之間,這就意味著每次填充時的大量查詢操作會再次導致幀數驟降,這使得RenderCache的效果大打折扣。實際上,CEGUI 0.7直接去掉了這一層。

         CEGUI 0.7渲染隊列的填充方式如:

圖2 CEGUI0.7版本渲染隊列填充方式

         可以看到0.7中引入了GeometryBuffer結構直接作為渲染隊列的待渲單位,每個視窗對應一個GeometryBuffer,如此一來,如果視窗之間的前後次序沒有發生變動,渲染隊列是不需要被重新填充的。確切地說,GeometryBuffer提供了比RenderCache更好的緩衝功能,得益於這個結構,0.7的渲染隊列也比前版本的渲染隊列給出了更合理的填充方案。理想情況下,這種設計會使你的遊戲效能獲得上百幀的提升。

         值得一提的是,之前版本的CEGUI渲染隊列僅提供Quad類型的渲染單位,也就是說你只能渲染四邊形圖元。而0.7版本的渲染隊列裡的GeometryBuffer,引入了Vertex頂點列表的概念,理論上你可以渲染手繪多邊形圖元。這讓實作類別似《魔獸世界》裡技能表徵圖的冷卻計時效果(一個形如時鐘的扇形圖元)變得相當容易,這種效果如果使用之前版本的CEGUI來實現,可要大費一番周折了。

         綜上,如果你的項目仍在使用CEGUI 0.6,立刻開始考慮CEGUI 0.7吧!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.