5.7. Функции доступа к текстуре Функции доступа к текстуре видны и вершинному, и фрагментному шейдеру. Каждая из этих функций в качестве первого параметра получает переменную типа sampl ег. Если заданный семплер - типа sampl erlD, то операция доступа к текстуре будет считывать данные из Ш-текстуры, которая ранее была связана с этим семпле-ром. (Было бы неправильно, если бы приложение ассоциировало с переменной sampl erlD не lD-текстуру.) Точно так же переменная sampl er2D используется для доступа к 20-текстуре и т. д. Правила приоритетности текстур, актуальные для стандартных операций OpenGL, здесь будут проигнорированы. Приложение должно устанавливать параметры состояния для текстур самостоятельно перед выполнением шейдера (см. раздел 7.8).

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

Во всех этих функциях параметр Ы as необязателен для фрагментных шейде-ров и не принимается в вершинном шейдере. Если Ы as задается для фрагментного шейдера, он добавляется к вычисленному уровню детализации. Если параметра bi as нет, реализация OpenGL сама выберет уровень детализации. Если текстура не множественная, она используется непосредственно; если же множественная текстура используется фрагментным шейдером, уровень детализации вычисляется автоматически и используется затем для поиска по текстуре. Если же такая текстура используется вершинным шейдером, всегда будет прочитана основная текстура.

Встроенные функции, заканчивающиеся на Lod, доступны только из вершинного шейдера. В них параметр 1 od и есть уровень детализации, Встроенные функции, заканчивающиеся на Proj, можно использовать для текстурирования с учетом проекции. Это позволяет текстуре быть спроецированной на объект приблизительно таким же способом, как это делает проектор со слайдами. Эту возможность, кроме всего прочего, используют также для составления карт теней при рендеринге теней.


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