Как использовать #include в поддержке glsl ARB_shading_language_include - программирование
Подтвердить что ты не робот

Как использовать #include в поддержке glsl ARB_shading_language_include

Я не буду использовать макрос #include для включения шейдерных файлов в glsl, и я слышал, что существует расширение ARB_shading_language_include #include макро. Кто-нибудь может дать мне фрагмент кода, показывающий, как использовать макрос #include?

4b9b3361

Ответ 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"