2007-03-28

Try to Inline shader text into C/C++ code

Nvidia Devloper Blog看到Inlining shader text into C/C++ code這篇文章. 今天嘗試把一些預設的shader code使用這個方式載入.

方式很簡單, 就是在resource editor使用import shader .fx檔案的方式產生新的 resource, resource type定為RCDATA即可.這樣在使用D3DXCreateEffectFromResource時候, 就可以載入成功.

不過一開始測試的時候卻載入失敗. 原因是我把Graphics相關的部分寫成一個graphices.lib. 而resource的定義也是放在graphics.lib的project內. 但是在編譯主程式的時候, 雖然有link到graphics.lib..但是定義的resource卻不會自動link. 所以執行的時候就找不到相關的resource. 後來在高人指點之後, 才知道原來要手動link...於是把該編譯好的.res檔案加到主程式的專案內..這樣就可以執行了.

目前這個是暫時的解決方案, 因為我覺得這樣設定很突兀, 本來只需要透過設定project間的dependency就可以自動link lib的, 卻因為resource檔案必須手動加到主程式的專案. 之後如果把lib給他人使用, 編譯後的resource檔案也是要一起提供. 這樣不是很方便, 所以之後會想辦法改成DLL版本. 這個問題就可解決了.