До компоновки расположение uniform-переменных неизвестно. После компоновки данной командой можно получить расположение uniform-переменной. Это значение может передаваться в gl Urii formARB для установки значения uniform-ne-ременной или в gl GetUni formARB для запроса текущего состояния uniform-переменной, После успешной компоновки программного объекта место uniform-перемен-ных не меняется до следующей компоновки.

Установка значения определенной разработчиком uniform-переменной возможна только в случае, если программный объект активен. Все определенные разработчиком uniform-переменные при компоновке объекта устанавливаются в 0. Определенные разработчиком uniform-переменные - часть состояния программного объ:.i0rra, Их значения можно изменять, только если программный объект сам являет-■ея частью текущего состояния для рендеринга, но при временном выводе программного объекта из текущего состояния значения остаются неизменными. Для .установки uniform-переменных используются следующие несколько функций: void g1Uniform{l|2|3|4}{f|i}ARB(GLint location, TYPE i/)

Эта функция устанавливает определенную разработчиком uniform-переменную или массив переменных в значение v. Суффикс 1, 2, 3 или 4 указывает, сколько компонентов содержит v. Это значение должно совпадать с количеством компонентов в ТУРЕ (например, 1 для float, int, bool; 2 для vec2, ivec2, bvec2 ит.д,). Суффикс f указывает, что тип передаваемых значений - число с плавающей запятой, а суффикс i - что это целое число; этот тип должен совпадать с типом uniform-переменной, i-вариант этой функции должен использоваться для uniform-переменных, объявленных как int, ivec2, ivec3 и ivec4 или массивов из них. f-ва-риант должен использоваться для типов float, vec2, vec3 и vec4 или массивов из них. Каждый из них может использоваться для передачи значений в uniform-ne-ременные типов bool, bvec2, bvec3 и bvec4 или массивов из них. Значение uniform-переменной будет установлено в FALSE при входном значении 0 или O.Of или в TRUE - при любом другом значении;

void gHJniform{l[2j3|4}{f|i}vARB(GLint location, GLuint count, const TYPE i/)

Функция устанавливает значение в в определенную разработчиком uniform-ne-ремённую или массив uniform-переменных, на которые ссылается location. Эти функции передают количество и указатель на значения для установки в uniform-переменную или массив переменных. Если устанавливается значение одной переменной, значение count должно быть 1, а при установке значения для массива - 1 или больше. Номер в названии функции означает количество компонентов каждого элемента в v, и это количество должно совпадать с количеством компонентов в указанной uniforra-переменной (то есть 1 для float, int, bool; 2 для vec2, ivec2, bvec2 и т, д.). Суффикс v в названии функции обозначает, что передается указатель на вектор значений. Суффиксы f и i имеют те же значения, что и для не векторных версий gl Uni form.

Для массивов uniform-переменных каждый элемент массива считается принадлежащим типу, указанному в имени функции (например, gl Uni form3f или gl Uni fornfifv можно использовать для установки значений в массив uniform-переменных типа vec3). Количество элементов массива, которые должны быть установлены, указано в count',


⇐ вернуться назад | | далее ⇒