3D遊戲基礎 Direct3D(一) D3D基本概念及渲染流水線簡介

來源:互聯網
上載者:User
終於,在前3篇文章裡面聊完了基本的空間幾何概念,現在可以說到實際的東西了。
一直以來,都希望用最淺顯易懂的語言,把我對3D的一些瞭解記錄下來,作為一個系列的科普文章,供大家消遣時看看。

大約十年以前,我擁有了第一台電腦,不久見識到了3D遊戲的魅力。聽說了OpenGL,再後來又聽說了微軟的DirectX 3D(簡稱 D3D)。早期的遊戲對比來看,基於OpenGL的遊戲畫面效果似乎要比D3D略好一些,不過在微軟在windows平台給OpenGL穿小鞋之後,OpenGL逐漸被D3D所超越。到今天,D3D的效果似乎已經略優於OpenGL了。

那麼,到底什麼是OpenGL和D3D呢?
這就要從商業、技術、電腦發展史等角度來看了。
當年ID soft的卡馬克他們,發明了遊戲引擎這個概念之後,人們開始用引擎來開發大量的遊戲,當遊戲的畫面擬真度越來越高時,僅僅靠CPU來進行圖形影像處理已經不能滿足遊戲的需要了。於是,人們開始嘗試用硬體加速卡來協助CPU進行3D影像處理,此舉在技術上和商業上都大獲成功。早期比較出名的比如 Voodoo等。
於是,大量的加速卡及GPU(Graphic Processing Unit)設計公司開始迅速推出自己的設計,如 ATI(剛被AMD收購),NVidia,PowerVR(市場萎縮,轉向嵌入式系統的3D加速單元,參考PowerVR MBX及OpenGL ES)等開始展露頭角。
問題隨之出現:每家公司可能都有自己的設計方案,那麼遊戲和3D應用程式開發人員所設計開發出來的軟體就很難在不同的廠商之間的加速卡上運行,很難很好的使用這些加速卡的加速功能。也就是說,這類應用程式的移植性將會降低。
要解決移植性的問題,可以通過將加速卡功能抽象出來,統一定義介面的形式來實現。於是,人們採用了典型的分層模式(參閱:設計模式),將一套應用程式分為3個層次:
                                                  應用程式層 -> 硬體抽象層 -> 硬體層
其中,應用程式層 就是遊戲和應用軟體開發人員的開發主體,他們調用統一的加速卡API來進行上層開發,而不用考慮移植性問題;
硬體抽象層 則抽象出硬體的加速功能,進行有利於應用程式層開發的封裝,並嚮應用層開放API;
硬體層 將硬體驅動提供給抽象層,以實現抽象層加速功能的有效性。
這個結構有效將遊戲和應用程式 與 硬體加速卡隔離開,這就很好的提升了程式的移植能力。並且,還有一個好處就是,開發人員的知識複用率得到提高,從而降低了這類軟體的開發門檻。

於是,眾多的加速卡廠家就聯合起來,形成一個組織,共同制定出了這個硬體抽象層的介面標準,這就是OpenGL。
而出於同樣的目的,微軟也定義了一套平行的類似於OpenGL的介面集合,就叫做 Direct 3D。
這就是OpenGL和D3D的起源。

不同的是,OpenGL只包含了3D加速介面,而DirectX除了D3D之外,還包含了聲音介面Direct Sound,然後還有輸入輸出裝置的介面,統稱為DirectX。

不論OpenGL還是D3D,他們的工作流程其實是大同小異的。
後續均以D3D為例,進行討論。

3D加速卡的主要功能就是協助CPU,負責將記憶體中的向量映像資料(頂點集合)進行變換、光照計算、裁剪等操作,最後經過光柵化將映像呈現給人眼。這個過程就叫做渲染,D3D把整個渲染分為9個步驟,9個步驟的組合,就叫做流水線,或者叫 管線 (參閱 設計模式 之 流水線模式)。
D3D的渲染管線(Rendering Pipeline):
局部座標變換 -> 全局座標變換 ->觀察座標變換->背面消除->光照->裁剪->投影->視口計算->光柵化
(這9個環節在後續文章中會逐一介紹)
固定管線 和 可程式化管線都要經過這9個步驟。

首先介紹 可程式化管線。顧名思義,就是說管線中的某些環節是可以被控制的。人們可以通過對GPU中的著色器進行編程的方式,來控制、管理加速卡的渲染效果。著色器分為 頂點著色器和像素著色器。 頂點著色器是在進行 座標變換 和 光照計算時工作,像素著色器是在光柵化環節工作。人們對著色器進行自訂編程時,這個流水線就叫做 可程式化管線。
同時,D3D還提供預設的著色器程式,當遊戲或應用程式完全使用預設著色器程式時,這個流水線就叫做 固定管線。

後續的章節,會首先介紹固定流水線及其各個環節,之後會介紹著色器編程。

聯繫我們

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