Прямо перед установкой любого равномерного параметра в шейдер, я использую glGetUniformLocation для извлечения его позиции вместо того, чтобы делать это один раз в начале и сохраняя значение позиции int. Вот так:
const int location = glGetUniformLocation(program, name.c_str());
glUniform4fv(location, 1, &v.x);
Значительно ли это повлияет на мою производительность?
IMHO, это будет зависеть от скорости сравнения строк (хэшей строк). Хотя шейдер не перекомпилирован, позиция int не будет изменена (однако она не может быть изменена). Поэтому рекомендуется хранить места один раз и получать каждый кадр.