Здравствуйте, вопрос следующий: есть несколько шейдеров для реализации разных эффектов, как их совместить так, что бы в разных ситуациях применялись разные шейдеры?
Например, для одной текстуры - один шейдер, для другой - другой шейдер, для вывода отладочной графики - третий шейдер.
Единственное до чего я додумался - это завести переменную, которая отвечает за текущий режим шейдера:
C
uniform int mode;
void main() {
if (mode==1){
...
}
if (mode==2){
...
}
if (mode==3){
...
}
}
и в функции отрисовки:
C++ (Qt)
void GLWidget::paintGL(){
glClear(GL_COLOR_BUFFER_BIT);
program->setUniformValue("mode", 1);
...
program->setUniformValue("mode", 2);
...
program->setUniformValue("mode", 3);
...
}
Однако что то мне подсказывает, что условия в шейдерах - это нехорошо.
Подскажите, пожалуйста, как в таких случаях обычно поступают? Мне за один кадр нужно применить несколько эффектов в разных ситуациях.