За один вызов функции можно задавать значение одного, двух, трех или всех четырех компонентов настраиваемого атрибута вершины, указанного в index. Если передается только одно значение, используется функция, в имени которой есть 1, и при этом изменяется значение первого компонента дополнительного атрибута вершины, а второй, третий и четвертый компоненты устанавливаются в 0, 0 и 1 соответственно. Если в имени функции есть 2, значения задаются для первых двух компонентов, третий компонент устанавливается в 0, а четвертый - в 1. Если используется функция, в имени которой есть 3, значения задаются для первых трех компонентов, а четвертый компонент устанавливается в 1. Цифра 4 в имени функции означает, что значения задаются для всех четырех компонентов.

Буквы s, f, i, d, ub, us, ui означают типы аргументов short, float, int, double, unsigned byte, unsigned short, unsigned int соответственно. Если к имени добавляется еще и V, функция как аргумент получает указатель на массив таких значений. Если в имени функции присутствует N, функция считает, что ей передаются аргументы в виде чисел с фиксированной запятой, масштабированных к нормализованному диапазону в соответствии с правилами преобразования компонентов, определенными в спецификации OpenGL. Значения знаковых типов считаются значениями с фиксированной запятой из диапазона [-1, 1 ], а значения беззнаковых типов - значениями с фиксированной запятой из диапазона [0, 1].

Attribute-переменные языка шейдеров OpenGL бывают матричных типов: mat2, mat3 или mat4. Значения переменных этих типов тоже задаются функциями семейства glVertexAttribARB. Матрицы должны быть записаны в последовательные ячейки массива дополнительных атрибутов по столбцам: один столбец матрицы в каждой ячейке.

Определенную разработчиком в вершинном шейдере attribute-переменную можно связать с индексом в массиве дополнительных атрибутов вершины функцией gl Bi ndAttri bLocati onARB. Это позволяет обращаться к дополнительным атрибутам не по индексу, а по имени переменной. Изменение значения дополнительного атрибута немедленно отражается в связанной attribute-переменной вершинного шейдера.


⇐ Предыдущая| |Следующая ⇒