Внешне определите макросы препроцессора в GLSL

GLSL имеет полный препроцессор C-стиля. Единственной вещью, которая не работает, является #include. Одна из замечательных особенностей - то, что это, Вы можете используемый #ifdef, чтобы прокомментировать функции и таким образом создать одну программу построения теней, которая может быть сокращена, если определенные функции не используются.

Мой Вопрос:

Существует ли способ определить макрос от кода C?

Там не кажется никаким способом сделать это с интерфейсом openGL. Быстрый взлом должен предварительно ожидать несколько строк с #define НЕЧТО, прежде чем код загрузил файл формы. Но это кажется отчасти назад.

21
задан rioki 4 March 2010 в 10:27
поделиться

1 ответ

На самом деле вам не нужно добавлять его к загруженному коду. Вот почему в API glShaderSourceARB есть несколько строк.

Что-то вроде следующего делает то, что вы ищете:

char *sources[2] = { "#define FOO\n", sourceFromFile };
glShaderSourceARB(shader, 2, sources, NULL);
25
ответ дан 29 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: