D3D 9和D3D 11繪製流水線對比

2021-08-04 04:10:50 字數 909 閱讀 3284

繪製流水線(pipline)是圖形學程式設計中屬於各種圖形學框架的骨架。windows平台下3d遊戲開發幾乎都會用到d3d來進行遊戲引擎的設計。d3d 9是使用比較廣泛的乙個版本,d3d 9 中比較核心的就是固定渲染管線(fixed function pipline)。下圖是從官方的sdk中翻譯的,從這個圖中就可以比較清晰的看到d3d 9的繪製流水線。

d3d 9 的繪製流水線

從圖中標有顏色的部分可以看到,固定渲染管線中的座標變換和光照(transform & light)是在渲染中有著相當重要的作用。使用固定渲染管線時,需要在程式**中進行設定。這部分內容可以使用頂點著色器(編寫hlsl指令碼)來替代這部分的工作。那麼使用頂點著色器和t&l誰更具有優勢呢?

從上面的兩點可以看到,固定渲染管線相比著色器確實少了很多的靈活性,這可能也是導致d3d後面版本中重點發展著色器(shader)的原因。

那麼就再看看d3d 11的繪製流水線。乍一看,d3d 11 的流水線要清晰好多,它是由比較對稱的各個stage組成的。然後裡面就是讓人眼花繚亂的shader。

d3d 11 的繪製流水線

對比可以發現,d3d 9支援可程式設計管線,但是它還是側重於固定渲染管線。畢竟可程式設計管線在d3d9中處於起步的階段,使用的並不廣泛。然而在d3d 11中的不再支援固定渲染管線,統一採用可程式設計管線。雖然僅僅是版本上的更新,可以看出d3d9和d3d11是幾乎完全不同的。

即便是這樣,它們最終使用的原理還是沒有任何的差異,都是基於計算機圖形學,空間幾何等理論基礎的。不同的實現方式,也僅僅是使用不同的方法來對理論知識進行表示。

(一)D3D9渲染原理

su ce和texture。使用su ce相對來說比使用texture要簡單一些,但是不如使用texture靈活。抽象概念 direct3d的抽象概念包括 devices 裝置 swap chains 交換鏈 和resources 資源 device 裝置 用於渲染3d場景。例如單色裝置就會渲染黑白...

D3D11之快取更新 update buffer

話說這兩天我寫程式遇到乙個bug,是關於如何建立的id3d11buffer的應該以一種怎樣的方式在每幀渲染進行快取資源的更新 我總結為下 填充 頂點 快取形容結構體和子資源資料結構體,並建立頂點快取 這裡用的是動態快取 d3d11 buffer desc vertexbufferdesc verte...

D3D9學習筆記之顏色

學習目標 顏色的表示 在 direct3d 中,顏色用 rgb 三元組來表示。將顏色分解為紅色 red 綠色 green 藍色 blue 這三個分量的加性混合決定了最終的顏色。我們可用該三個分量的不同組合來表示上百萬種顏色。rgb資料可用兩種不同的結構來儲存 第一種是結構是 d3dcolor,它實際...