gl Uni f orin2f ARB (loci. l.Of. 2.Of): // правильно glUniform2iARB(1ocl. 1. 2); // неправильно
glUniformlfARBdocl, l.Of); // неправильно
glUniformlfvARB(loc3. 10. floatPtr): // правильно glUniformlfvARB(loc4. 10. floatPtr): // неправильно glUniformlfvARB(1oc4. 8. floatPtr): // правильно Вторая строка неправильная, так как loci ссылается на uniform-переменную типа vec2, а не і vec2. Третья строка неправильная из-за того, что 1 осі ссылается на vec2, а не на float. Пятая строка неправильная, так как количество заданных элементов таково, что получится выход за конец массива.
7.7. Установка uniform-переменных
Uniform-переменные, и определенные разработчиком, и встроенные, которые могут считываться в процессе работы шейдера, называются активными uniform-Щеменными. Предполагается, что компилятор и компоновщик распознают объявленные, но нигде не используемые uniform-переменные. Это позволяет делать код более гибким и модульным - объявлять много uniform-переменных, а те из них, что не будут использоваться в работе, выбрасывать при компиляции и компоновке.
Чтобы получить список активных uniform-переменных из программного объекта, используется функция gl GetActi veUni f onrARB. Приложение может запрашивать значения uniform-переменных программного объекта и предоставлять конечному пользователю элементы интерфейса для непосредственной работы со значениями определенных разработчиком uniform-переменных:
void glGetActiveuniformARBCGLhandleARB program.
GLuInt index.
GLsizei maxLength.
GLsizei * length.
GLint *size.
GLenum Hype.
GlcharARB *name)
Эта функция возвращает информацию о unifarm-переменной, указанной по индексу index, из программного объекта program. Размер символьного буфера, выделенного приложением, указывается в maxLength, а указатель на буфер - в паше. Uniform-переменная (встроенная или определенная разработчиком) считается активной в тендере, если при компоновке было определено, чтр шейдер может обращаться к ней. Это означает, что program уже должен быть скомпонован функцией gl LinkProgramARB, но не обязательно успешно. Список активных uniform-переменных может включать как имена встроенных переменных (начинающихся с префикса gl_), так и имена переменных, определенных разработчиком. Функция glGetActiveUniforaARB возвращает имя uniform-переменной, указанной index, сохраняя его в пате. Возвращаемая строка будет заканчиваться нуль-символом. Количество реально записанных в буфер символов, не считая нуль-символа, возвращается в length, а если эта информация не нужна, вместо параметра можно передать NULL.