GLSL имеет полный препроцессор C-стиля. Единственное, что не работает, - #include. Одна из замечательных особенностей заключается в том, что вы можете использовать #ifdef для комментирования функций и, таким образом, создать один шейдер, который может быть разрежен, если некоторые функции не используются.Внешние определения макросов препроцессора в GLSL
Мой вопрос:
Есть ли способ определить макрос из кода C?
Невозможно сделать это с помощью интерфейса openGL. Быстрый взлом - это добавить несколько строк с #define FOO до загрузки файла формы. Но это похоже на обратную сторону.
Это допустимое решение, но не намного лучше, чем добавление исходного кода. – rioki
хорошо, это зависит от того, что вам нужно. Это хорошо, чтобы предотвратить некоторое дополнительное распределение памяти и копировать (именно поэтому я бы рассмотрел взломанное решение preend). Что будет выглядеть лучше для вас и почему? – Bahbar
Я думал больше о строках 'glDefine (« Moo »,« Foo »)' ... но, похоже, я правильно изучил спецификации ... – rioki