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

來源:互聯網
上載者:User

 

心血來潮啊,決定要翻譯《real-time 3D terrain engines using C++ and DX9》,希望多廣大的遊戲愛好者有所協助。首先聲明,沒有商業用途的意思(當然不排除要是一不小心弄出本書,小賺一筆的想法,哢哢。。。YY一下)。本文章原版著作權歸作者所有,中文版著作權歸本人所有,其他人未經允許不得轉載,或用於商業用途。(模仿人家來個著作權聲明什麼的。。。。汗)
還有還有,水平有限,四六級慘不忍睹。。。。自己也還在學習,所以多多指正(雖然我覺得說得很假)
從第四章開始,主要是覺得前三張介紹的東西不是很具體,如果不會的話看這本書不可能學會的,所以。。。。
 
第四章 GAIA engine overview
在最初的三章裡,我們介紹了一些我們開發我們的引擎將要依賴的DX組件:the Directx3D sample framework, the Direcct3D extension library 和 HLSL,在這一部分的最後一章裡,我們通過解釋一些引擎中的一些關鍵的資源(resource)來結束這一部分。當你通讀整個引擎原始碼的時候,你將經常碰到這些類,所以我們花一點時間來給出這些類和他們的功能的概述。
       不要擔心這些早期的開發工作單位看起來有點煩人---確實是這樣。然而花準備工作中的少許時間對我們將來進入那些有趣的世界將是非常有協助。這些簡單的類和介面將會為我們接下來的道路上節省很多時間,並且將確保我們我們接下來的寫的引擎共用一個一直的架構。我們將通過介紹引擎和實際的編寫代碼來開始,然後介紹我們將要建立一些特別的資源類型。
       這些資源的細節可以通過閱讀提供的原始碼獲得他們最詳盡的細節。在這章裡,我們提供每個資源類型的簡要介紹以及他們設計中的重點。具體的實現則參看提供的源檔案。
 
初遇GAIA,3D地形引擎
       我們將把我們的3D屋外地形遊戲引擎叫做Gaia,一個希臘神——大地之母的名字(畢竟這是一個地形引擎)。命名引擎對於維護我們的代碼和D3DX支援庫的邏輯分隔是非常有用的並且也提供了我們自己定義的類型和外來庫中定義的類型的物理分隔。
       許多遊戲引擎利用一些特別的第三方庫來處理一些特別的任務,比如管理3D音效或者物理模擬。要做到這點,就有必要採取一些步驟來確保我們的引擎代碼不會和外部第三方庫代碼衝突。最簡單的辦法就是用名字空間(namespace)封裝我們的整個引擎,這個名字空間對外界隱藏所有的類,類型和函式宣告。這可能會是一些不習慣與名字空間的程式員產生挫敗感的地方,但是使用名字空間要比在每個函數和類型中加上詞綴來區別他們要進階。
       然而看起來可以試著跳過名字空間轉而使用詞綴gaia來命名我們的引擎函數,例如gaiaDrawBox(),gaiaPrintText(),這種多餘的命名方式將很快陷入麻煩。為了避免我們引擎中型別宣告與作者的衝突,gaia的詞綴必須被加到每個累,株距類型和函數申明中。
       與使用詞綴相比,一個名字空間可以用來隔絕整個引擎。所有全域函數和累定義都在這個空間中聲明。這高效的類比了gaia詞綴的作用同時提供了一個捷徑來避免它必須被顯式的標註。這是因為所有在名字空間gaia中聲明的類和函數都自然預設的使用這個名字空間,將程式員從必須顯式的在類中使用函數和類型時標明中解放了出來。並且,關鍵字 using namespace gaia 可以在所有引擎源檔案的頭部聲明來通知編譯器:名字空間gaia將被作為預設的名字空間,這有一次類比了顯式的表明詞綴。
       對老練的C++程式員來說,使用名字空間來隔絕庫代碼並不是什麼新鮮的東西。標準模板庫(STL)做了同樣的事情——將所有庫模板分裝在名字空間std中。如果這對STL——一個別數百萬程式員使用的實用類集合中 很好,那麼我們這麼做也很好。在本書剩餘的部分中,我們總是假定已經使用了名字空間gaia,為了讓代碼讀起來更容易一些,名字空間被省略了。

 

 

相關文章

聯繫我們

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