Which is better ?
To have one shader program with a lot of uniforms specifying источники света для использования или сопоставления (например, мне нужно, чтобы одна сетка была сопоставлена с параллаксом, а другая - с параллаксом / отражением). Я бы сделал кэшированный список униформы для ленивого переноса и просто менял пару униформ для каждой следующей сетки, если это необходимо.
Для есть много программ шейдеров для каждого необходимого случае, каждый с небольшим количеством униформ, и выполните ленивую привязку с помощью glUseProgram для каждого меша, если это необходимо. Здесь я предполагаю, что сетки правильно сгруппированы, чтобы избежать избыточных переключателей.