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

Функция возвращает полный исходный код шейдера из тендерного объекта shader. Этот исходный код - результат предшествующего вызова gl ShaderSourceARB. Возвращаемая строка заканчивается нуль-символом.

Для функции glGetShaderSourceARB существует ограничение на количество символов возвращаемой строки, задаваемое màxLength. Количество символов в реально возвращенной строке находится в параметре length, а если ограничивать их количество не требуется, можно передавать в этот параметр N U LL. Необходимый размер буфера для сохранения возвращаемого кода можно узнать с помощью функции glGetObjectParameterARB со значением GLJJBJECT_SHADER_SOURCE_LENGTH_ARB.

Результат компиляции будет сохранен в информационном журнале шейдерно-го объекта; а результат компоновки - в информационном журнале программного объекта. Информационный журнал - это строка, содержащая диагностические сообщения, предупреждения и другую информацию о последней компиляции (для шейдериых объектов) или компоновке и проверке (для программных объектов). Сразу после создания шейдерного или программного объекта его информационный журнал представляет собой строку длиной 0. Он может содержать полезную информацию даже в случае успешного завершения компиляции или компоновки, нужен в основном только во время разработки графического приложения, и разработчик не должен ожидать от различных реализаций OpenGL одинаковых сообщений об ошибках. Получить информационный журнал для шейдерного или программного объекта позволяет функция

void gIGetlnfoLogARBCGLhandleARB object. GLsizei màxLength. GLsizei * length. GLcharARB *infoLog)

Эта функция возвращает информационный журнал для указанного объекта object. Журнал обновляется каждый раз после компиляции шейдера, а для программного объекта - каждый раз при компоновке или проверке программы. Возвращаемая строка заканчивается нуль-символом.

Функция glQetlnfoLogARB возвращает в infoLog такую часть журнала, которая туда поместится, RQïïiaxLength символов. Количество реально возвращенных символов за-писывается в length; если же эта информация не нужна, следует просто передавать NULL. Размер буфера, способного вместить весь журнал, можно определить с помощью функции gl GetObjectParameterARB, передав ей значение GL_0BJECT_INF0 L0G_-LENGTH_ARB.


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