How to use glslang

穿精又带淫゛_ 提交于 2019-12-10 11:11:58

问题


I am trying to use glslang to compile glsl shader code to SPIR-V binaries. The glslang project can be found here:

https://github.com/KhronosGroup/glslang

It works well via the glslangValidator.exe manually in the command line. But i would like to use the c++ interface.

I have build the project as described on the github page, and now I am struggling with how to actually use the interface.

I would rather not actually include any projects in my solution (I am using Visual Studio), but link the .lib's and headers needed to use it. I just cannot find out which ones i need to link. The github page only mentions ShaderLang.h and StandAlone.cpp, which is not enough.

Can someone explain how to setup a project where you can use glslang? I need it only for compiling glsl shader code to SPIR-V binaries (with debugging info about the shader compilation). I Suppose this would be a very easy question for someone who has already done it, or has more experience.


回答1:


There are several libs you need to use. An example consumer to look at is LunarGLASS: https://github.com/LunarG/LunarGLASS. There, you can see the file:

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

Which inside contains this for the libraries:

set(GLSLANGLIBS
    glslang
    HLSL
    OSDependent
    OGLCompiler
    SPIRV)

The readme for glslang contains some important information. In addition, within glslang, the glslangValidator tool (basically StandAlone.cpp) shows how to use the API for the libraries. You can also see the Frontends/glslang directory in the LunarGLASS project for a similar use.




回答2:


The Shaderc project at https://github.com/google/shaderc provides an easy-to-use C++ API that wraps around Glslang's compiler to SPIR-V.

For example usage, see https://github.com/google/shaderc/blob/master/examples/online-compile/main.cc



来源:https://stackoverflow.com/questions/38234986/how-to-use-glslang

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!