2015-10-21 47 views
2

我讀過VS2015上的DirectX 11教程(http://www.rastertek.com/dx11s2tut04.html),發現作者分別使用.vs文件和.ps文件分別編譯頂點和像素着色器。我應該在HLSL中使用哪種着色器文件格式?

我還發現,在「使用DirectX 11的3D遊戲編程」一書中,作者使用.fx文件來整理本書中的着色器。

我應該用哪種方法用最新版本的Windows SDK開發我的direct3D程序,我想知道?因爲我聽說Effects11框架將來可能會被棄用。

+1

請參閱[此主題](https://fx11.codeplex.com/discussions/450240)關於效果11'狀態'的討論 –

回答

1

您應該避免在新項目中使用fx目標,並選擇每階段編譯。請注意,這與您是否將着色器代碼實際放置在單獨的文件中無關,儘管每個着色器有一個.vs.ps是常見慣例。在最新的(Windows 10)編譯器中已經棄用了對效果配置文件的完全D3D11支持(即fx_5_0),並且根本沒有fx_5_1(某些功能需要着色器模型5.1)。

+0

你是什麼意思'每個階段的彙編'?不要加載預編譯的效果文件並在運行時編譯? –

+0

@StefanAgartsson在編譯'?s_5_ [0/1]'時進行每階段編譯,其中'?'是'v'ertex,'p'ixel,'g'eometry,'h'ull,'d''之一,域或「c」計算。這與用於將多個着色器階段的組合作爲*技術*進行封裝的'fx'配置文件形成對比。編譯應該在編譯時離線完成。 – MooseBoys

+0

也就是說,總是在編譯時編譯.fx?我真的不知道,除.fx包含所有着色器,而.vs或.ps描述單個着色器,那兩者之間還有什麼不同? – voidRyan