Я не буду использовать макрос #include для включения шейдерных файлов в glsl, и я слышал, что существует расширение ARB_shading_language_include #include макро. Кто-нибудь может дать мне фрагмент кода, показывающий, как использовать макрос #include?
Как использовать #include в поддержке glsl ARB_shading_language_include
Ответ 1
Первое, что вам нужно понять о shading_language_include, - это то, чего нет. Это не "I #include файл с диска". OpenGL не знает, какие файлы; он не имеет понятия файловой системы.
Вместо этого вы должны предварительно загрузить все файлы, которые вы хотите включить. Итак, у вас есть строка шейдера и имя файла, из которого вы загрузили строку. По существу, вы должны создать виртуальную файловую систему в OpenGL.
Вы используете glNamedStringARB для загрузки строки в виртуальную файловую систему. Имя строки - полное имя пути.
После того, как вы создали свою виртуальную файловую систему, вы должны, для каждого скомпилированного шейдера, инициализировать расширение.
#version MY_OPENGL_VERSION //Whatever version you're using.
#extension GL_ARB_shading_language_include : require
После инструкции #extension вы можете #include по своему усмотрению.
Ответ 2
Я хотел бы ответить на вопрос 0xbadf00d, но не имею репутации.
От ARB/shading_language_include.txt:
"<type> должен быть SHADER_INCLUDE_ARB"