Функция glGetActiveAttribARB возвращает имя attribute-переменной, указанной с индексом index, сохраняя его в пате. Возвращаемая строка будет заканчиваться нуль-символом. Реальное количество символов, записанных в буфе]) (не считая нуль-символа), возвращается в length, но если это несущественно, то можно передать NULL.

Количество активных атрибутов в программном объекте можно узнать с помощью функции gl GetObjectParameterARB с аргументом GL_0BJECT_ACTIVE_ATTRIBUTES_ARB. Если задавать для index значение 0, возвратятся параметры первой активной attribute-переменной, а если задать значение GL_0BJE СТ_АСТ I VE_ATTRI BUTESARB -1, возвратятся параметры последней. Длину самого длинного имени attribute-переменной можно получить функцией gl GetObjectParameterARB с параметром GL__ OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB.

Аргумент type будет содержать указатель на тип attribute-переменной. Тип указывает одна из символических констант: GL_FL0AT, GL_FL0AT_VEC2_ARB, GL FLOAT VEC3 ARB, GL_FL0AT_VEC4_ARB, GL_FL0AT_MAT2_ARB, GL_FL0AT_MAT3_ARB и GL_FL0AT_MAT4_ARB. Аргумент size будет содержать размер атрибута в единицах возвращенного в type типа.

Эта функция возвращает максимум информации об указанной attribute-переменной. Если нет доступной информации, length будет равен нулю и пате будет пустой строкой. Такое может произойти в случае не состоявшейся компоновки.

Описанная команда может быть полезна, если разработка шейдера и разработка приложения выполняются раздельно. Если между разработчиками шейдера и приложения достигнуто соглашение об именах атрибутов, во время выполнения можно запрашивать программный объект для получения действительно нужных атрибутов, а затем передавать их. Это придает гибкость процессу разработки шейдеров.

Чтобы получить состояние конкретного дополнительного атрибута вершины, нужно вызвать одну из функций:

void glGetVertexAttri.bfvARBCGLuint index. GLenum pname. GLfloat *params) void glGetVertexAttribivARB(GLuint index, GLenum pname. GLint *params) void glGetVertexAttribdvARB(GLuint index, GLenum pname, GLdouble *params)

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