Я не буду использовать макрос #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
"