real-time 3d terrain engines using C++ and DX9 翻譯 4

來源:互聯網
上載者:User

管理共用資料資源
       引擎包含集中不同的共用資料。這些資源表示的資料在多人遊戲中訪問和共用。例子包括紋理,頂點緩衝,索引緩衝和渲染方法。事實上,許多共用資源都是依賴於顯卡,因為他們使用顯存作為他們儲存的一部分。這些裝置的管理器需要訪問這些依賴資源。例如,顯示管理器需要訪問所有紋理,頂點和索引緩衝這樣它能夠處理那些顯示裝置失去和重新得到的介面的情況。
       這需要一些關鍵的類。首先,我們為所有共用資源定義一個基類,cResourcePoolItem.他提供了一個外部存取方法可以使用的通用介面。這些包括基本的建立和銷毀這些資源,啟用和禁用共用資源,把它作為流輸入和輸出磁碟的介面函數。這些基類中的成員函數被定義為純虛函數,強制所有衍生類別提供基於這些函數的實現。這個虛介面允許外部存取者,例如一個裝置管理員去影響一個基於cResourcePoolItem類的對象的集合而不需要知道他們代表的具體類型。
       帶著同樣的想法,我們增加一個類叫做cResourcePool。這個類是cDatePool的一個擴充,設計來處理基於cResourcePoolItem類的兌現,提供額外的方法來操作這些資源。就像cResourcePoolItem類,cResourcePool類提供一個範圍者可以使用的基本介面。假定所有的cResourcePoolItem對象包含一個標準的介面方法集合,cResourcePool提供增加成員函數在全部池成員中實現迭代並且傳遞資料給這些函數。對外部存取者來說,這提供了重要的對共用資料類型的處理。例如,顯卡管理器可以使用這個類型的介面去快速的啟用和禁用一個cDatePool對象中的所有紋理。
       共用資源通常通過一個文字字串定義。例如,對紋理來說,這個字串可能是磁碟上源映像的實際路徑名。除了提供重要的操作方法,cResourcePool也儲存這些資源名字字串的尋找表。這個給訪問者提供一個通過名字尋找共用資源對象的方法。使用標準模板庫(STL)的map容器類來建立這個資源名字的“電話本”,並且提供訪問和尋找方法來定位元據池中的每個成員。
       最後,cResourcePoolManager單一實例類(singleton class)提供了所有貢獻資源集區的儲存倉庫。每個cResourcePool可以在cResourcePoolManager對象中建立和註冊,同時索引值定義了資料池中儲存的資源類型和它所屬於的家族(family)。這些索引可以在cResourcePoolManger標頭檔的全域枚舉中找到。一個枚舉定義了所有資源可能屬於的家族(family)(音訊,視頻的,等等)。附加的枚舉定義了每個家族包含的資源類型。

     

      聯合的家族和類型索引被儲存為一個32位值的16位中。這個值,叫做cResourceCode,被用於唯一的定義管理者中的所有資來源物件類型。當新的資源資料池背簡曆,他們在管理器中註冊他們自己,提供一個cResourceCode對象來唯一的標識他們自己。外部的訪問者可以通過使用合適的cResourceCode從管理器中請求cResourcePool介面來得到對他們的訪問。
       當我們建立實際的引擎資源和管理器的時候,這些資源類的功能將變得更加明顯。現在,參考配套光碟片上資源相關的原始碼檔案來進一步探索他們的功能。資源檔在被張的開頭列出。清單4.3是這些資來源物件怎樣被建立和使用的例子。

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.