Я пытаюсь использовать 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 (с отладочной информацией о компиляции шейдера).
Полагаю, это будет очень простой вопрос для тех, кто уже сделал это или имеет больше опыта.
Есть несколько библиотек, которые вам нужно использовать. Примером потребителя, на который можно посмотреть, является 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 для аналогичного использования.
Проект Shaderc в https://github.com/google/shaderc предоставляет простой в использовании C ++ API, который охватывает компилятор Glslang для SPIR-V.
Например, использование см. https://github.com/google/shaderc/blob/master/examples/online-compile/main.cc