Как использовать glslang

Я пытаюсь использовать glslang для компиляции кода шейдера glsl в двоичные файлы SPIR-V.
Проект glslang можно найти здесь:

https://github.com/KhronosGroup/glslang

Он хорошо работает через glslangValidator.exe вручную в командной строке.
Но я хотел бы использовать интерфейс C ++.

Я собрал проект, как описано на странице github, и сейчас я борюсь с тем, как на самом деле использовать интерфейс.

Я бы предпочел не включать какие-либо проекты в моё решение (я использую Visual Studio), но связать .lib и заголовки, необходимые для его использования.
Я просто не могу узнать, какие из них мне нужно связать. На странице github упоминаются только ShaderLang.h и StandAlone.cpp, чего недостаточно.

Может кто-нибудь объяснить, как настроить проект, где вы можете использовать glslang? Он мне нужен только для компиляции кода шейдера glsl в двоичные файлы SPIR-V (с отладочной информацией о компиляции шейдера).
Полагаю, это будет очень простой вопрос для тех, кто уже сделал это или имеет больше опыта.

1

Решение

Есть несколько библиотек, которые вам нужно использовать. Примером потребителя, на который можно посмотреть, является LunarGLASS: https://github.com/LunarG/LunarGLASS. Там вы можете увидеть файл:

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

Который внутри содержит это для библиотек:


set(GLSLANGLIBS
glslang
HLSL
OSDependent
OGLCompiler
SPIRV)

Файл readme для glslang содержит важную информацию. Кроме того, в glslang инструмент glslangValidator (в основном StandAlone.cpp) показывает, как использовать API для библиотек. Вы также можете увидеть каталог Frontends / glslang в проекте LunarGLASS для аналогичного использования.

0

Другие решения

Проект Shaderc в https://github.com/google/shaderc предоставляет простой в использовании C ++ API, который охватывает компилятор Glslang для SPIR-V.

Например, использование см. https://github.com/google/shaderc/blob/master/examples/online-compile/main.cc

2

По вопросам рекламы [email protected]