Direct3D 11 (效果)

DirectX 效果是管線狀態的集合,由 以 HLSL 撰寫的運算式和效果架構特有的一些語法所設定。

編譯效果之後,請使用效果架構 API 來轉譯。 效果功能的範圍可以像頂點著色器一樣簡單,轉換幾何和輸出純色的圖元著色器、需要多個傳遞的轉譯技術、使用圖形管線的每個階段,以及操作著色器狀態,以及與可程式化著色器無關的管線狀態。

第一個步驟是組織您想要在效果中控制的狀態。 這包括著色器狀態 (頂點、殼層、網域、幾何、圖元和計算著色器) 、著色器所使用的紋理和取樣器狀態,以及其他非可程式化的管線狀態。 您可以在記憶體中建立效果做為文字字串,但大小通常夠大,因此在效果檔案中儲存效果狀態相當方便, (以 .fx 副檔名結尾的文字檔) 。 若要使用效果,您必須 (編譯它,以檢查 HLSL 語法以及效果架構語法) 、透過 API 呼叫初始化效果狀態,以及修改轉譯迴圈來呼叫轉譯 API。

效果會將特定效果所需的所有轉譯狀態封裝成稱為技術的單一轉譯函式。 傳遞是包含轉譯狀態的技術子集。 若要實作多個傳遞轉譯效果,請在技術內實作一或多個傳遞。 例如,假設您想要使用一組深度/樣板緩衝區來轉譯一些幾何,然後在上面繪製一些 Sprite。 您可以在第一個階段中實作幾何轉譯,並在第二個階段中實作 Sprite 繪圖。 若要轉譯效果,您只需轉譯兩者都會傳入轉譯迴圈。 您可以在效果中實作任意數目的技術。 當然,技術數目越大,效果的編譯時間就越大。 利用這項功能的方法之一,就是使用設計在不同的硬體上執行的技術來建立效果。 這可讓應用程式根據偵測到的硬體功能,正常降級效能。

一組技術可以分組在群組 (,其使用語法 「fxgroup」) 。 技術可以以任何方式分組。 例如,可以建立多個群組,每個材質一個;每個材質可能都有每個硬體層級的技術;每個技術都有一組傳遞,可定義特定硬體上的材質。

本節內容

主題 描述
在效果中組織狀態
使用 Direct3D 11 時,特定管線階段的效果狀態會依結構組織。
效果系統介面
效果系統會定義數個介面來管理效果狀態。
特有介面
ID3DX11EffectVariable 有許多方法可將介面轉換成您需要的特定介面類別型。
效果中的介面和類別
在 Effects 11 中使用類別和介面有許多方式。
轉譯效果
效果可用來儲存資訊,或使用狀態群組進行轉譯。
複製效果
複製效果會建立第二個效果,幾乎完全相同的效果複本。
串流輸出語法
具有資料流程輸出的幾何著色器會以特定語法宣告。
效果 10 與效果 11 之間的差異
本主題顯示效果 10 與效果 11 之間的差異。

Direct3D 11 的程式設計指南