Я пытаюсь получить мою голову вокруг следующего:OpenGL - переключатель шейдеры
Я объект, который я хочу, чтобы иметь возможность визуализации с двумя различными наборами вершин/фрагментами шейдеров, что у каждого есть свой формы и текстуры, и идти туда и обратно между этими двумя настройками. (Я знаю, что в этом случае я мог бы только один шейдер с равномерным диктовала логику для запуска, но это является частью более крупных вещами, где я не могу этого сделать)
- Должен ли я использовать один или два гл программы (созданные
glCreateProgram()
)? - Если я использую две программы, можно ли отменить тот, который не используется, и перестроить его, если потребуется позже? Или это слишком медленно?
- Если я использую только одну программу:
- я могу скомпилировать шейдер только один раз в начале?
- при переключении следует отключить старые шейдеры, подключить новые и снова связать программу?
- Должен ли я перекомпоновать все места униформы после связывания?
- Должен ли я пересобирать буферы массивов после связывания?
- Должен ли я что-то сделать, чтобы удалить ранее прикрепленные текстуры?
Создание и связывание шейдеры это Usally очень медленная операция. Я бы рекомендовал просто создать две программы в начале и использовать их, если это необходимо. Для получения дополнительной информации вам нужно будет предоставить более подробную информацию о вашем сценарии использования. Например, как часто нужно менять шейдер. – BDL