我不希望Visual Studio自動檢測對着色器文件所做的更改,而是將glslangValidator作爲構建步驟來手動編譯我的GLSL着色器爲SPIR-V。我正在使用Premake生成Visual Studio解決方案/項目。這部分工作使用Premake 5和Visual Studio 2015將GLSL編譯爲SPIR-V
一種溶液宣佈在premake5.lua
:
--prebuildcommands [[for %%i in (..\data\shaders\*) do (..\libs\vulkan\glslangValidator.exe -V -o "%%~dpibin\%%~nxi.spv" %%i)]]
,然後right-click shader in solution explorer -> properties -> General -> Item Type -> Custom Build Tool
。
也有一些缺點,以這種方法:
- 所有着色器編譯時,只有一個人改變
- 我不得不手動更改VS項目設置
我能找到的最接近的事預製文件是:Custom Build Commands。我認爲這個想法是在着色器文件上使用過濾器並生成構建命令,但我無法獲得任何工作。也許別人有想法?
「*我什麼都做不了。*」以什麼方式?請發佈你認爲應該工作但沒有的代碼,然後解釋它是如何工作的。 –
我試過了:'filter「files:../ data/shaders/*」 prebuildcommands [[.. \ libs \ vulkan \ glslangValidator.exe -V -o%{file.directory} \ bin \%{file.name } .spv%{file.relpath}]]',但我不確定premake中的單個文件是否支持prebuild命令。我鏈接的github wiki頁面使用'buildcommands',但它似乎是專門用於將資源轉換爲obj文件並與其他文件進行鏈接。無論哪種方式我的vcxproj,過濾器,用戶,sln等沒有引用glslang命令,所以它似乎premake忽略它。 – Petwoip
「*它似乎是專門用於將資源轉換爲obj文件並與其餘鏈接*」Wiki上的示例編譯了Lua腳本。 Lua不編譯彙編;它是一種*解釋*語言。編譯Lua腳本只是把它變成Lua程序集,只能由Lua解釋器讀取。 –