【发布时间】:2019-09-19 15:23:17
【问题描述】:
我正在使用来自 github 的 Jonno Robson 的 Vulkan 代码库:Vulkan-Terrain-Generator 作为指南和/或学习参考,以更好地理解 Vulkan。我对源代码本身没有任何问题,但我的问题或担忧与将 GLSL 着色器代码编译成 Spir V 代码有关。我是 SpirV 的编译器和工具包的新手。我尝试使用以下两种方法:glslangValidator.exe 和 glslc.exe 将着色器文件转换为 Spir V 文件。
在 Jonno 的代码库中,他将每个 GLSL 着色器文件转换为相应的 spirv 文件。我尝试使用他在批处理文件中使用的标志选项,唯一的区别是我用我自己的目录替换了指向他的 glslangValidator.exe 的目录。
我正在尝试实现相同的效果,它将批处理文件目录中的所有着色器文件从 GLSL 编译到 Spir V,它将在每个文件的末尾附加 .spv在将其从 GLSL 转换为受尊重的 Spir V 字节码后,它将在该目录中生成的新 SpirV 文件。
这是我的批处理文件的样子:
compile.bat
C:\VulkanSDK\Bin\glslangValidator.exe -V %1 -o %1.spv
pause
但是在我双击批处理文件后它对我不起作用。它打开并运行,但没有生成预期的 shader_filename.vert.spv ... shader_filename.frag.spv 文件。
我不知道他们在什么平台上运行,但我运行的是 Windows 7,我不知道这是否会影响批处理命令中提供的命令参数或标志。我不知道他们是否使用了 Vulkan SDK 中的任何其他工具包或一些外部库或工具,或者没有。
我希望能够使用这个批处理文件做的是使用最简单的批处理命令将所有着色器文件转换为适当的 Spir V 文件。我不想为每个着色器文件一遍又一遍地编写相同的命令,因为这个目录中有超过 20 个着色器。
如何实现这一点,或者 glslangValidator 或 glslc 生成所需 SpirV 文件的正确命令参数是什么?
我已阅读此处找到的文档:SPIR-V Toolchain,但我仍然不确定如何正确生成所需的批处理文件。
【问题讨论】:
-
@GerhardBarnard 最后一个命令是带引号还是不带引号?我只是用引号试了一下,仍然没有生成文件...
-
@GerhardBarnard
C:\Users\skilz99\source\repos\Vulkan Terrain Generator\res\shaders>pause Press any key to continue . . .与着色器文件所在的目录相同。 -
@GerhardBarnard 我想知道是否因为
project或solution目录的名称中有一个空格会产生影响......我认为它不应该,但它可以。 .. -
@GerhardBarnard 我熟悉 C/C++ 中的 OpenGL 和 GLSL,但我正在尝试自学 Vulkan,它需要 Spir-V ...所以现在我想弄清楚了解如何使用工具链从 GLSL 或 HLSL 转换为 Spir-V...可能!
-
这里只是清理了一些cmets。
标签: batch-file command command-line-arguments vulkan spir-v