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

來源:互聯網
上載者:User

索引緩衝和頂點緩衝
       索引緩衝和頂點緩衝資源在例子引擎中使用得非常頻繁,並且把他們作為獨立資源是很有用的。對我們引擎的大部分資料來說,在那些傳統模型不提供索引和頂點緩衝的時候保留他們然後在某個時候覆蓋整個模型符合我們的基本要求。索引和頂點緩衝對於動態資料特別有用,當使用裝置依賴資源的時候他們必須被很小心的處理。使用動態頂點和索引緩衝使我們能夠隨時建立幾何體或者在CPU上動畫已經存在的物體。在我們構建地形引擎的時候,我們使用這兩種辦法。
       澄清下,我們所說的動態(dynamic)意味著完全代替。鎖定一個頂點或索引緩衝來改變一些隨機的值將在大多數顯卡上產生交錯的糟糕的表現。因此我們在我們的介面中對這些資源不支援這種行為。在我們的引擎中,我們在每次需要更新的時候將整個動態緩衝全部替代。這讓驅動能夠維護一個單方向的動態資料。一旦資料背傳送到顯卡,將不再試著將資料讀入系統記憶體去更新某些特殊值。
       類對象cVertexBuffer和cIndexBuffer提供我們的緩衝需要的基本操作。這些對象同時包含我們的常規緩衝和動態緩衝。為了支援動態(可以認為是代替)快取資料,我們使用一個NVIDIA和Microsoft共同認可的最好的方法來更新動態資料。
       這個函數使用一個特大的緩衝來存放動態資料。例如,如果你的動態資料由10個頂點組成,你將會建立一個能夠容納100個資料的動態緩衝。利用這個大空間,你可以每次只使用10個頂點資料。在第一幀,你使用頂點0~9,索引10~19在第二幀被使用,然後繼續下去。當你使用完所有的空間,整個緩衝的內容都會被銷毀,然後從0號頂點開始處理。這個滑動視窗計劃(sliding window scheme)被認為使用起來是很友好的,因為它能導致最少數目的直接記憶體存取(Direct Memory Access ,DMA)操作被打斷。清單4.5展示了基於在Microsoft DirectX9 Developer FQA中列出的演算法偽碼。

相關文章

聯繫我們

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