Direct3D 10 (效果)

DirectX 效果是管線狀態的集合,由以 HLSL 撰寫的運算式所設定,以及效果架構特有的一些語法所設定。 編譯效果之後,請使用效果架構 API 來轉譯。 效果功能的範圍可以像頂點著色器一樣簡單,轉換幾何和輸出純色的圖元著色器、需要多個傳遞的轉譯技術、使用圖形管線的每個階段,以及操作著色器狀態,以及與可程式化著色器無關的管線狀態。

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

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

Direct3D 10 的程式設計指南