2014-12-05 154 views
1

所以,我不知道如何使用着色器。編碼它們很容易,但實際上並不使用。 MSDN對我來說真的沒用,這意味着他們有最糟糕的教程。我目前正在閱讀弗蘭克盧娜的Direct3d 11書,我終於到了真正能夠畫畫的地方。令人興奮的,除了它工作的事實。他的BoxDemo - 我確信在3年前製作這本書的時候已經工作了,但現在已經有了所有新的DirectX的東西 - 省略了DirectX SDK,現在使用「Windows SDK」,FX被棄用,沒有更多的D3DX庫...太令人沮喪了。我繼續降級到DirectX 2010 SDK - 這樣我才能真正使用教程。幾乎每個D3D教程都使用D3DX庫。找不到DirectX11着色器?

無論如何...現在我的問題。 Visual Studio可以選擇製作.hlsl文件。但是,它也具有make .fx文件的能力(如果您只是在文件名末尾鍵入.fx,則會創建.fx文件)。 因此,我可以使用已棄用的.fx方法,並學習如何使用它,所有教程都可以輕鬆使用它 - 或者我可以學習HLSL的新的方法,並且嘗試使用HLSL學習最困難,最令人沮喪的時間沒有教程。

我知道他們都使用HLSL語言。但是它們都以不同的方式在程序中使用。 (CreateEffectFromMemory,CompileFromFile等)。 我有點希望學習新的方式,但如果我不這樣做沒問題。雖然,我幾乎有一個使用.fx文件的整個程序。我相信它會起作用,但我只需要幫助構建和使用「Effects11.lib」。

對不起,在郵件上拖 - 事實上,我相信我會在一段時間內不會收到任何回覆 - 如果我確實收到了 - 由於篇幅所限。我非常沮喪,因爲學習DirectX已經讓我的編程生涯在過去的一個月,兩個月裏陷入了巨大的停滯。請和謝謝你的任何幫助

回答

5

文件擴展名.hlsl.fx是任意的。這就像.cppcxx之間的差異。歷史上,.fx用於包含頂點着色器,像素着色器和效果(FX)技術/通過的HLSL着色器,而.hlsl是不包含效果(FX)技術/通道的文件,但僅僅是一種約定。有很多都用在那裏。

重要的是該文件是如何編輯。如果您使用fx_5_0,則需要使用Effects 11運行時才能實際使用它們。這本身並沒有什麼特別之處。它實際上只是針對您爲效果(FX)技術/傳遞提供的compile聲明的每個組合調用相同的編譯器,並將它與一些元數據捆綁在一起。實際上,您通常可以在包含技巧的文件.fx上調用FXC編譯器,並使用類似vs_5_0ps_4_0的文件進行傳遞,如果您獲得正確的參數,它將編譯相應的特定於舞臺的着色器。

RE:Effects11

的主要問題與影響11是它需要的D3DCompile DLL在運行時,因爲它使用的是提取要連接的狀態和着色器所需的元數據。此D3DCompile DLL不適用於Windows應用商店的Windows 8.0和Windows Phone 8.0,當您實際上部署了該應用時,僅當您在開發該應用時。因此,效果11不適用於這些平臺。

這不再是針對Windows 8.1或Windows Phone 8.1的Windows應用商店應用程序的技術問題,但編譯器支持fx_5_0仍被棄用。對於其他配置文件vs_5_0等,有一些問題已經修復。如果您希望使用或不使用它,則取決於您,只要您瞭解它的侷限性即可。

效果11的最新版本是CodePlex,我解決了這裏的限制。有一些簡單的tutorials使用它,以及一些samples效果11實際上根本不需要傳統的DirectX SDK。

總之,YMMV w.r.t.到效果11,但您仍然可以將它用於Win32桌面應用程序,用於Windows 8.1的Windows應用商店應用程序,Windows Phone 8.1應用程序以及理論上與Xbox One應用程序一起使用。

RE:D3DX

我可以理解的沮喪,但它與圖書出版業和技術書籍是在變化的角度身後球方式的共同課題。 DirectX 11於2008年推出。到Windows 8 SDK的過渡是在2012年進行的,大多數開發人員更少地完成了書籍發佈。我在blog的那本書上有一些筆記。請參閱Living without D3DX

對於Win32桌面應用程序,您可以繼續使用舊的DirectX SDK。需要注意的主要事情是使用隨VS 2012和VS 2013在Windows 8.x的SDK,在includelib路徑訂單逆轉比他們用VS 2010見MSDN瞭解詳情。

RE:學習的Direct3D 11

你是否看了DirectX Tool Kit

Getting Started with Direct3D 11

Direct3D Feature Levels

HLSL, FXC, and D3DCompile

至於教程和樣本,嘗試DirectX SDK Samples Catalog

+0

感謝您的徹底解答!真的清除了FX和hlsl之間的一些東西。 這個列表可能會派上用場 - 也許當我轉移到明年的Window 10時。最後,我一直在使用DirectX一次又一次地遇到許多問題。我不放棄,不。當然不是。它只是爲我構建了一個更大的挑戰。我明白什麼是什麼,但代碼是什麼讓我。 再次感謝帖子! – AceDawg45 2014-12-06 03:11:19