c++ - 如何使用glslang

标签 c++ glsl shader vulkan spir-v

我正在尝试使用 glslang 将 glsl 着色器代码编译为 SPIR-V 二进制文件。 glslang 项目可以在这里找到:

https://github.com/KhronosGroup/glslang

它在命令行中手动通过 glslangValidator.exe 运行良好。 但我想使用 C++ 接口(interface)。

我已经按照 github 页面上的描述构建了项目,现在我正在为如何实际使用界面而苦恼。

我宁愿不在我的解决方案中实际包含任何项目(我使用的是 Visual Studio),而是链接使用它所需的 .lib 和 header 。 我就是找不到我需要链接的那些。 github页面只提到了ShaderLang.h和StandAlone.cpp,这还不够。

有人可以解释如何设置一个可以使用 glslang 的项目吗?我只需要它来将 glsl 着色器代码编译为 SPIR-V 二进制文件(带有有关着色器编译的调试信息)。 我想对于已经做过或有更多经验的人来说,这将是一个非常简单的问题。

最佳答案

您需要使用几个库。要查看的示例消费者是 LunarGLASS:https://github.com/LunarG/LunarGLASS .在那里,您可以看到文件:

https://github.com/LunarG/LunarGLASS/blob/master/CMakeLists.txt

哪个里面包含这个库:

set(GLSLANGLIBS
    glslang
    HLSL
    OSDependent
    OGLCompiler
    SPIRV)

glslang 的自述文件包含一些重要信息。此外,在 glslang 中,glslangValidator 工具(基本上是 StandAlone.cpp)展示了如何使用库的 API。 LunarGLASS 项目中的 Frontends/glslang 目录也有类似的用途。

关于c++ - 如何使用glslang,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38234986/

相关文章:

opengl - GLSL 通过采样使用噪声函数在顶点着色器中计算球体网格上的法线会产生奇怪的图形错误

GLSL如何设置平面的透明度?

ios - OpenGL photoshop 叠加混合模式

c++ - valgrind 报告 getpwuid() 在 Ubuntu 中的 c++ 泄漏

c++ - boost::xpressive 查看序列的开头

c++ - 如何获取GLSL编译错误的行号

javascript - WebGL/GLSL时间变量类似于ShaderToy

c++ - 访问默认 lambda 参数中的模板类参数

python - PyOpenGL 将变量传递给顶点着色器

c++ - 加载着色器后清除内存