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

API языка шейдеров OpenGL

void glVertexAttribPointerARBCGLuint index,
GLint size.
GLenum type.
GLboolean normalized,
GLsizei stride.
const GLvoid *pointer)

Эта функция указывает расположение и формат данных массива дополнительных атрибутов вершин, которые будут использоваться для рендеринга. Доступ к массиву происходит по индексу index. Аргумент s ize указывает количество компонентов в атрибуте, которое должно быть 1, 2,3 или 4. Аргумент type определяет тип данных каждого компонента (GLJYTE, GL_UNSIGNED_BYTE, GL_SH0RT, GLJJNSIGNEDJHORT, GLJNT, GL_unSIGNED_INT, GL_FL0AT или GL_D0.U8LE). Аргумент stride определяет шаг по индексу, что позволяет передавать значения атрибутов как в отдельном массиве, так и вперемешку с другими атрибутами. Аргумент norma 1 ized, установленный в GL_TRUE, показывает, что значения, переданные в виде целых чисел, будут отображены на диапазон [-1,0,1,0] (для знаковых значений) или [0,0,1,0] (для беззнаковых значений) при доступе к ним и приведении к типу чисел с плавающей запятой. При другом значении этого аргумента нормализация выполняться не будет. Аргумент pointer - адрес памяти, где расположен массив с атрибутами вершин.

Посте того как информация о вершинах будет занесена в массив дополнительных атрибутов, нужно включить использование массивов. В этом случае дополнительные атрибуты будут передаваться вместе с обычными данными для вершин при вызове команд работы с массивами, например gIDrawArrays. Чтобы включить или выключить работу с массивом дополнительных атрибутов, используются функции

void glEnablevertexAttribArrayARBCGLuint index) void glDisableVertexAttribArrayARBÉGLuint index)

Они включают или выключают работу с массивами дополнительных атрибутов вершин, указанными аргументом index. По умолчанию все подобные возможности выключены, в том числе и работа со всеми массивами дополнительных атрибутов вершин. При включении функциональности значения из этих массивов будут извлекаться и использоваться при рендеринге в функциях glArrayElement, gIDrawArrays, glDrawElements.glDrawRangeElements, glMultiDrawArrays или glMulti Draw-Elements.


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