Команда с N в названии обозначает, что для данных, не являющихся числами с плавающей запятой или числами двойной точности, аргументы будут линейно отображены на нормализованный диапазон точно так же, как данные, передаваемые з целые варианты функций gl Col or и gl Normal. To есть для функций, работающих сцелыми числами со знаками, самое большое положительное число отображается на 1,0, а самое маленькое - на -1,0; для беззнаковых целых наибольшее положительное число отображается на 1,0, а наименьшее - на 0.

Attribute-переменные могут быть типов mat2, mat3 или mat4. Установить их мож-йо с помощью функции gl VertexAttri bARB в последовательные ячейки по столб-дам. То есть чтобы задать атрибут типа mat4, нужно установить первую колонку в attribute-переменную с индексом 1, вторую - в attribute-переменную с индексом i +1, третью - в attribute-переменную с индексом i +2 и четвертую - в attribute-переменную с индексом i+3.

За одним исключением, атрибуты вершин могут быть любыми. Их можно использовать для передачи всего, чего угодно: дополнительных значений цвета, тангенсов, бинормалей, значений глубины и т. п. Исключение сострит в том, что вершинный атрибут с индексом 0 используется, подобно вызову функции gl Ver -tex, для того, чтобы сообщить OpenGL об окончании передачи данных для конкретной вершины. Команды gl Vertex2, gl Vertex3, gl Vertex4 полностью эквивалентны соответствующей команде gl VertexAttri bARB с индексом 0. Для атрибута с индексом 0 не существует текущего значения; при попытке получить его будет сгенерирована ошибка. Только один этот атрибут имеет такие свойства; установка всех прочих стандартных атрибутов может выполняться в произвольном порядке, вперемешку с. установкой других дополнительных атрибутов. Можно также сочетать вызовы gl Vertex с вызовами функции gl VertexAttri bARB с индексом 0.

API для работы с вершинными массивами было расширено для того, чтобы задавать дополнительные атрибуты в вершинных массивах. Следующая функция установит вершинный массив для дополнительного атрибута:

void glVertexAttribPointerARBCGLuint index,

GLint size.

GLenum type.

GLboolean normalized.

GLsizei stride. const GLvoid *pointer)

Эта функция указывает расположение и формат данных массива дополнительных атрибутов вершин, которые будут использоваться для рендеринга. Доступ к массиву происходит по индексу index. Аргумент s ize указывает количество компонентов в атрибуте, которое должно быть 1, 2,3 или 4. Аргумент type определяет тип данных каждого компонента (GL_BYTE, GL_UN31 GNED_BYTE, GL_SH0RT, GL_UNSIGNEO_SHORT, GL^INT, GL_UNSIGNED_INT, GL_FL0AT или GL_D0U8LE). Аргумент stride определяет шаг по индексу, что позволяет передавать значения атрибутов как в отдельном массиве, так и вперемешку с другими атрибутами. Аргумент norma 1 ized, установленный в GL_TRUE, показывает, что значения, переданные в виде целых чисел, будут отображены на диапазон [-1,0,1,0] (для знаковых значений) или [0,0,1,0] (для беззнаковых значений) при доступе к ним и приведении к типу чисел с плавающей запятой. При другом значении этого аргумента нормализация выполняться не будет. Аргумент pointer - адрес памяти, где расположен массив с атрибутами вершин.


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