void glCompileShaderARBCGLhandleARB shader)

Команда компилирует исходный код, хранящийся в объекте. Результат компиляции будет сохранен как часть состояния шейдерного объекта. Это значение будет установлено в GL_TRUE, если не допущено никаких ошибок компиляции, и в GL_FALSE, если ошибки были. Это можно узнать с помощью функции gl Get-ObjectParameterARB с аргументами shader и GL_08JECT_C0MPILE_STATUS_ARB. Шейдер не сможет быть скомпилирован, если его исходный код неправилен лексически, грамматически или семантически. Независимо от того, была компиляция успешной или нет, информацию о ней можно получить из протокола шейдерного объекта функцией gl GetlnfoLogARB.

У языка шейдеров OpenGL есть свои правила компиляции, которые немного различаются в зависимости от типа компилируемого шейдера, так что во время компиляции учитывается, является шейдер вершинным или фрагментным.

Информацию о прохождении этой операции можно получить с помощью функции glGetlnfoLogARB (см. раздел 7.5) с параметром shader, но не нужно использовать ее как показатель успешности или неуспешности компиляции. Если компиляция прошла успешно, эта функция возвратит либо пустую строку, либо информацию об операции компиляции. Если же компиляция шейдерного объекта прошла с ошибками, информационный лог будет содержать сообщения о любых лексических, грамматических или семантических ошибках, а также предупреждения и другую информацию от компилятора.

7,3. Компоновка и использование шейдеров Функция gl Compi 1 eShaderARB возвращает контроль приложению, не ожидая окончания компиляции. Все последующие команды, которые влияют на завершение компиляции (например, glLinkProgramARB), блокируются до ее завершения. Для того чтобы убедиться, что компиляция прошла успешно, нужно запросить результат компиляции, воспользовавшись функцией gl GetObjectParameterARB. Эта функция будет ожидать окончания компиляции исходного кода и момента, когда статуе результата станет доступным.

.3. Компоновка и использование шейдеров Каждый шейдерный объект компилируется отдельно. Чтобы создать программу, нужен механизм для определения списка шейдерных объектов, которые должны быть скомпонованы в одну программу. Это делается созданием программного объекта и присоединением к нему всех шейдерных объектов для данной программы.


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