Все активные uniform-переменные программного объекта инициализируются в 0 после его успешной компоновки. Все значения, установленные функцией gl Uni formARB, сохраняются до следующей успешной компоновки, где они опять сбрасываются в 0.
С помощью функций glUniform{l|2|3|4}{f|i}vARB можно менять значения одной uniform-переменной или целого массива. В эти функции передаются количество и указатель на список значений для uniform-переменной или массива переменных. Значение 1 в count соответствует одной uniform-переменной, а значение 1 или больше - целому массиву или части массива. Номер, присутствующий в имени функции, должен совпадать с количеством компонентов типа данных указанной uniform-переменной (тоесть 1 для float, int, bool; 2 для vec2, ivec2, bvec2 и т. д.). Тип данных, присутствующий в имени функции, должен совпадать с типом соответствующей uniform-переменной, как и в функции gl Uni form{l|2|3|4}{f|i }ARB.
В массивах uniform-переменных каждый элемент считается того типа, что указан в имени функции (например, функция gl Uni form3f или gl Uni form3f v может работать с массивом uniform-переменных типа vec3). Количество элементов массива указано в count.
Функции gl Uni formFl oatMatri x{2|3|4}fvARB используются для матриц или массивов матриц. Номер в имени функции означает размерность матрицы. Номер 2 означает матрицу 2x2 (4 значения), номер 3 - матрицу 3x3 (9 значений), номер 4 - матрицу 4x4 (16 значений). Если параметр transpose равен GL_FALSE, функция считает, что матрицы перелаются по столбцам. Если параметр transpose равен GL_TRUE,
glUniformARB
функция считает, что матрицы передаются по строкам. Аргумент count содержит количество передаваемых матриц: 1 - для изменения значения одной матрицы и большее количество - для изменения значений массива матриц.
Примечания Для установки значения в uniform-переменную типа семплера годятся только функции glUniformliARB и glUniformlivARB. При попытке использования любой другой функции возникает ошибка GL_INVAL ID_0PERATI0N.
Если число значений, заданное в count, превышает величину указанной uniform-переменной, возникает ошибка GL_INVALID_VALUE, а значение uniform-переменной не меняется.