Результат выполнения этой операции будет сохранен как часть состояния программного объекта. Это значение будет установлено в GL_TRUE при успешной проверке или в GL_FALSE - при неудачной проверке, а получить его можно функцией glGetObjectParameterARB с арЕу ментами program и GL_0BJ ECT_VAL I DATE^STATU S_ARB.

Эта функция используется только во время разработки приложения. Содержимое информационного журнала (текст диагностических сообщений) обычно зависит от реализации OpenGL, то есть нельзя ожидать от разных реализаций одних и тех же сообщений.

Так как функции, описанные в этом разделе, могут значительно ухудшить производительность, рекомендуется применять их только при разработке приложения и комментировать или удалять вызовы до окончательного выпуска программного обеспечения.

7.10. Значения, зависящие от реализации

Поведение некоторых возможностей, описанных в предыдущих разделах, зависит от реализации OpenGL. Все значения API языка шейдеров OpenGL, которые зависят от реализации, могут быть получены функцией gl Get. Приведем их.

□ GL_MAX_VERTEX_ATTRIBSJ\RB - определяет максимальное количество активных вершинных атрибутов. Минимальное предусмотренное стандартом значение - 16.

□ GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB - определяет максимальное количество компонентов (то есть значений чисел с плавающей запятой), доступных для uniform-переменных вершинного шейдера. Минимальное предусмотренное стандартом значение - 512.

□ GL_MAX_VARYING_FLOATS_ARB - определяет максимальное количество varying-переменных, являющихся числом с плавающей запятой. Минимальное предусмотренное стандартом значение - 32,

□ GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB - определяет максимальное количество 1 аппаратных модулей, которые могут быть использованы для доступа к текстурным картам из вершинного процессора. Минимальное предусмотренное стандартом значение - 0.

□ GL_MAX_CQMBINED TEXTURE IMAGE_UN ITS_ARB - определяет максимальное общее количество аппаратных модулей, которые могут быть использованы для доступа к текстурным картам и из вершинного, и из фрагментного процессора. Мини* мальное предусмотренное стандартом значение - 2.

□ GL_MAX_TEXTURE_1MAGE_UMITS_ARB - определяет максимальное общее количество аппаратных модулей, которые могут быть использованы для доступа к текстурным картам из фрагментного процессора. Минимальное предусмотренное стандартом значение - 2.

□ GLJ'IAXJT£XTURE__COORDS_ARB - определяет максимальное количество доступных наборов текстурных координат. Минимальное предусмотренное стандартом значение - 2.

□ GL_MAX_FRAGMENT_UNIFORH_COMPONENTS_ARB - определяет максимальное количество компонентов (являющихся числами с плавающей запятой) для uniform-nepe-менных фрагментного шейдера. Минимальное предусмотренное стандартом значение - 64.

7.11. Код приложения для шейдеров кирпичной стены

Каждый шейдер хотя бы немного отличается от других. Например, вершинные шейдеры могут использовать различные наборы атрибутов или uniform-переменных, атрибуты могут быть связаны с различными адресами и т. д. Один из примеров программы, исходный код которой доступен для загрузки с веб-сайта компании 3Dlabs, - ogL2exampLe. В этой программе есть функция install для каждого набора шейдеров, которые предполагается установить и использовать. Приведенный далее пример похож, хотя и более прост, и определяет функцию установки шейдеров кирпичной стены. Функция установит шейдеры кирпичной стены, пред-твленные в главе 6. Но сначала нужно определить простую функцию, которая сможет задавать значения uniform-переменным:


⇐ вернуться назад | | далее ⇒