7.5. Функции запроса состояния
API языка шейдеров OpenGL содержит несколько функций для запроса состояния объекта. Чтобы получить тип объекта, подтип, результат выполнения операции над объектом, количество присоединенных объектов, количество активных атрибутов (см. раздел 7.6) и uniform-переменных (см. раздел 7.7) или длину любой строки из объекта, используется одна из следующих функций:
void glGetObjectParameterfvARB (GLhandleARB object.
GLenum pname.
GLfloat *params)
void glGetObjectParameterivARB (GLhandleARB object.
GLenum pname.
GLint *pdrdms)
Эти функции возвращают в params значение параметра объекта object. Они могут использоваться для получения информации об объекте. В табл, 7.1 значениерпате показано слева, а выполняемая операция - справа.
Таблица 7.1. Запрашиваемые параметры объекта
Параметр |
Операция |
GL_OBJECT_TYPE_ARB |
params возвращает значение GL_PROGRAM_OBJECT_ARB или GL_SHADER_OBJECT_ARB, в зависимости от того, является ли object идентификатором программного или шейдерного объекта |
BL_0BJECT_SUBTYPE_AR8 |
params возвращает значение GL_VERTEX_SHADER_ARB |
или GL_FRAGMENT_SHADER_ARB в зависимости от того, является ли object идентификатором вершинного или фрагментного шейдера | |
GL_OBJECT_DELETEJTATUS_ ARB |
params возвращает 1 или l,0f, если объект помечен для удаления, и 0 или 0,0f, если не помечен |
GL_OBJ£CT_COMPILE_STATUS_ ARB |
params возвращает 1 или l,0f, если последняя компиляция указанного шейдерного объекта была успешна, и 0 или 0,0f, если неуспешна |
EL_0B J ECT_L IN K_STATUS_ARB |
params возвращает 1 или 1,0Г, если последняя компоновка указанного программного объекта была успешна, и 0 или 0,0f, если неуспешна |
GLJ)B J ECT_VAL I DATE_STATU S_ ARB |
params возвращает 1 или 1,0f, если последняя проверка программного объекта была успешна, и 0 или 0,0f, если неуспешна |
GLJ)BJECTJNFO_LOG_LENGTH_ ARB |
params возвращает количество символов в информационном журнале указанного объекта, включая символ конца строки. Если у объекта нет информаци онного журнала, возвращается значение 0 или 0,Qf |
£L_OBJECT_ATTACHEDJ]BJECTS_ ARB |
params возвращает количество объектов, присоединенных к указанному программному объекту |
GL_OBJECT_ACTIV E_ATTRIBUTES _ARB |
params возвращает количество активных attribute-переменных заданного программного объекта |
GL_0BJ ECT_ACTIV E_ATTRI BUT E_ MAX_LENGTH_ARB |
params возвращает длину самого длинного имени активной attribute-переменной, включая символ конца строки, для заданного программного объекта. Если не существует активных attribute-переменных, возвращается 0 или 0,0f |
GL_OBJECT_ACTIVE_UMIF0RMS_ ARB |
params возвращает количество активных uniform-переменных заданного программного объекта |
fiL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB |
params возвращает длину самого длинного имени активной uniform-переменной, включая символ конца строки, для заданного программного объекта. Если не существует активных uniform-перемен-ных, возвращается 0 или 0,0f |
GLJ)BJECT_SHADER_SOURCE_LENGTH_ARB |
params возвращает общую длину исходного кода шейдера, включая символ конца строки. Если кода нет, возвращается значение 0 или 0,0f |
Исходный код шейдера можно получить из шейдерного объекта, вызвав функцию: