Поскольку в GLSL нет опции include-file, я пытаюсь добавить это с помощью парсера "#pragma include".(Я хочу этого, потому что у меня есть несколько общих методов, которые я хотел бы реализовать только один раз, но мог бы использовать во многих различных шейдерах, например, сглаживающий шаг Кена Перлина)
Парсинг файлов шейдеров для получения включенных файлов работает нормально.Но при настройке ShaderSource с несколькими исходными файлами я всегда сталкиваюсь с проблемами;Поскольку мой основной шейдер обычно начинается с "#version 330", а строка # version всегда должна быть первой строкой в шейдере, я могу добавить свой основной файл только в качестве первой в массиве строк, переданных glShadersource, и послечто все включенные файлы.Но тогда мой основной файл не может использовать никакие функции, реализованные в этих включенных файлах, так как они будут по существу объединены после моего основного файла, поэтому компилятор жалуется, что не знает функций, которыми является мой основной файлиспользование.
Единственный способ заставить его работать - это прочитать основной файл, разобрать прагму include, а затем заменить эту строку прагмы содержимым файла:включаемый файл (рекурсивное применение этого же метода ко всем включенным файлам, которые могут включать в себя и другие файлы), но это будет означать, что числа белья в ошибках компиляции больше не будут соответствовать реальным номерам белья основного файла.
Кто-нибудь установил какую-то функцию «включения» для GLSL, которая работает И сохраняет белья?И если так - как?