Сначала нужно выполнять запрос, чтобы определить длину информационного журнала (количество символов в строке). После выделения буфера нужного размера вызывается функция gl Get Inf oLogARB, для того чтобы поместить строку информационного журнала в предоставленный буфер. Потом можно эту строку, например, напечатать (листинг 7.1).

Листинг 7.1. Функция на языке С, печатающая информационный журнал объекта

void printlnfoLogCGLhandleARB obj) {
int infologLength = 0; int charsWritten = 0: GLcharARB *infoLqg:
pnntOpenGLErrorO ;

// Проверка на ошибки OpenGL

7.6. Установка атрибутов вершин

glSetObjectParameteri vARBCobj . GL_OBJECTJNFO_LOG_LENGTH_ARB,

âinfologLength): printOpenGLErrorO : // Проверка на ошибки OpenGL

- if (infologLength > 0) {
infoLog = (GLcharARB*)malloc(infologLength); if (infoLog == NULL)
{

printfC'OUMBKA: Невозможно выделить память для InfoLog\n"): exit(l):

}

glGetlnfoLogARBCobj. infologLength. &charsWritten. infoLog): printf С "InfoLog: \nSis\.n\n". infoLog) ; free(infoLog):

printOpenGLErrorO: // Проверка на ошибки OpenGL

}

Получить текущий программный объект можно с помощью функции GLhandleARB glGetHandleARBtGLenum рпате)

Она возвращает идентификатор текущего объекта состояния. Аргумент рпате определяет запрашиваемое состояние. Чтобы получить идентификатор программного объекта, следует передать GL_PR0GRAM_0BJECT ARB.

И наконец, список шейдерных объектов, присоединенных к конкретному программному объекту, можно получить функцией

vend glGetAttachedObjectsARB(GLhandleARB program. GLsizei maxCount. GLsizei *count. GLhandleARB *cbjects)

Эта функция возвращает идентификаторы шейдерных объектов, присоединенных к program. Максимальное количество возвращаемых объектов - maxCount. Количество реально возвращенных идентификаторов заносится в count, а если эта информация не нужна (например, перед этим количество присоединенных объектов уже было получено е помощью функции glGetObjectParameterARB), можно передавать NULL. Чтобы получить количество присоединенных объектов, нужно вызвать функцию glGetObjectParameterARB с параметром GL_QBJECT_ATTACHED_ OBJECTS J\RB.


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