Если тип и размер uniform-переменной шейдера отличаются от типа и размера, указанных в имени функции, возникает ошибка GL_INVALID_OPERATION, а значение uniform-переменной не меняется.
Если location не указывает на uniform-переменную текущего программного объекта, возникает ошибка и значение uniform-переменной не меняется.
Ошибки
GL_INVALID_0PERATI0N возникает в следующих случаях:
□ текущий программный объект не задан;
□ размер uniform-переменной, объявленной в шейдере, не совпадает с размером, указанным в вызове функции glUniformARB;
□ один из целочисленных вариантов этой функции используется для установки значения float, vec2, vec3, vec4 или массивов из них, или один из f-вариантов (с плавающей запятой) этой функции используется для установки значения i nt, i vec2, i vec3, i vec4 или массивов из них;
□ 1 ocati on не является корректным адресом uniform-переменной в текущем программном объекте;
□ количество задаваемых значений превышает объявленный размер указанной uniform-переменной;
□ семплер устанавливается не функциями gl Uni formli ARB и glUniformlivARB;
□ функция gl Uni f ormARB выполняется между соответствующими вызовами gl Begi n и gl End.
Соответствующие GET-функции
glGetActiveUniformARB, в которую передается дескриптор программного объекта.
gl GetUni formLocati onARB, в которую передаются дескриптор программного объекта и имя uniform-переменной.
gl GetUni formARB, в которую передаются дескриптор программного объекта и адрес uniform-переменной.
Смотри также
gl Disable, gl Enable, glLinkProgramARB, glUseProgramObjectARB
Приложение Б. Справочник функций API
glUseProgramObjectARB Название
gl UseProgramObjectARB - устанавливает программный объект в текущее состояние для рендеринга.
Прототип функции
void glUseProgramObjectARBCGLhandleARB program)
Параметры
program Дескриптор программного объекта, чьи выполняемые про граммы устанавливаются для рендеринга.
Описание Функция gl UseProgramObjectARB устанавливает программный объект program в текущее состояние. После успешного связывания шейдерных объектов с программным функцией gl AttachObjectARB, успешной их компиляции функцией gl Сотри 1 е-ShaderARB, успешной компоновки функцией gl Li nkProgramARB в программном объекте создается одна или больше выполняемых программ.