gpt4 book ai didi

visual-studio - 使用 Premake 5 和 Visual Studio 2015 将 GLSL 编译为 SPIR-V

转载 作者:行者123 更新时间:2023-12-04 05:52:56 31 4
gpt4 key购买 nike

我希望 Visual Studio 自动检测着色器文件的更改并运行 glslangValidator 作为构建步骤,而不是手动将我的 GLSL 着色器编译为 SPIR-V。我正在使用 Premake 生成 Visual Studio 解决方案/项目。

一种部分有效的解决方案是在 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 项目设置

  • 我在 premake 文档中找到的最接近的东西是: Custom Build Commands .我认为这个想法是在着色器文件上使用过滤器并生成构建命令,但我无法获得任何工作。也许其他人有想法?

    最佳答案

    我对 Premake 一无所知,但这适用于 Visual Studio:

  • 将着色器添加到您的项目
  • 在每个着色器文件集的属性页中Item TypeCustom Build Tool
  • 在新出现的Custom Build Tool为每个着色器文件设置的树:
  • 套装Command Line$(VULKAN_SDK)\Bin32\glslangValidator -V -o $(OutDir)\%(Identity).spv %(Identity) (对于 x32,否则 Bin 对于 x64 主机)
  • 套装Description好的东西,例如Compiling vertex shader
  • 套装Outputs例如$(OutDir)\%(Identity).spv
  • 套装Link ObjectsNo

  • 现在应该每个文件都可以工作,并且只正确编译修改过的文件,并在干净时删除它们。

    尽管我确实更喜欢在构建后步骤中添加一个命令的方法(就像你一样):
    for %%f in (*.vert *.tesc *.tese *.geom *.frag *.comp) \
    do %VK_SDK_PATH%\Bin\glslangValidator.exe -V -o $(OutDir)\%%f.spv %%f

    它的好处是可以轻松地将其添加到带有属性表的新项目中。

    关于visual-studio - 使用 Premake 5 和 Visual Studio 2015 将 GLSL 编译为 SPIR-V,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39072485/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com