glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);

glTexParameteri (GL_TEXTURE_1D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); Первая функция используется процедурами текстурирования, когда область текстурного узора нужно увеличить, чтобы она вмещалась в заданную координатную область сцены, а вторая функция используется, когда текстурный узор нужно уменьшить. (В OpenGL данные операции с текстурой называются увеличением (magnifying - MAG) и уменьшением (minifying - MIN).) Хотя присвоение цвета ближайшей текстуры пикселю выполняется быстро, это может привести к эффектам наложения. Чтобы рассчитать цвет пикселя как линейную комбинацию цветов наложенных на него текстур, вместо символьной константы GL_NEAREST используется GL_LINEAR. С помощью функции glTexParameter можно задать еще несколько параметров, и такая возможность будет рассмотрена в следующем разделе.

Задание текстурных узоров OpenGL для сцены чем-то похоже на задание векторов нормали к поверхности, RGB-цветов или других параметров. Узор нужно соотнести с некоторым объектом, но, в отличие от использования одного цвета, здесь есть набор цветовых значений. Для одномерного пространства текстур коды цвета задаются одной координатой s, значение которой в текстурном пространстве меняется от 0,0 до 1,0 (раздел 10.16). Следовательно, текстурный узор применяется к объектам на сцене через присвоение значений текстурной координаты точкам объекта. Конкретное значение s в одномерном пространстве текстур выбирается с помощью следующей команды.

glTexCoordl* (sCoord); Данная функция снабжается суффиксами-кодами b (byte), s (short), i (integer), f (float) и d (double), в зависимости от типа данных параметра текстурной координаты sCoord. Кроме того, если значение координаты s дается в виде массива, можно использовать суффикс v. Как и при использовании цвета и других подобных параметров, координата s - это параметр состояния, который применяется ко всем позднее определенным точкам в глобальных координатах. Значение координаты s по умолчанию - 0,0.

Чтобы отобразить линейный текстурный узор в участок сцены, заданный в глобальных координатах, указываются координаты s конечных точек отрезка. Затем (различными способами) на объект могут накладываться цвета текстуры, в OpenGL по умолчанию каждый код цвета пикселя умножается на соответствующий код цвета в текстурном узоре. Если цвет линии белый (1.0, 1.0, 1.0, 1.0) (цвет объектов на сцене по умолчанию), линия будет отображаться только с цветами текстуры.

В приведенном ниже примере создается четырехэлементный линейный текстурный узор из чередующихся зеленых и красных точек. Далее весь текстурный узор, определенный в промежутке от 0,0 до 1,0, присваивается прямому отрезку. Поскольку цвет линии - белый (по умолчанию), линия отображается в цветах текстуры.

GLint к; GLubyte texLine [16]; // 16-элементный массив текстуры. /* Определяется два зеленых элемента текстурного узора. */

/* Каждый цвет текстуры задается в четырех позициях

* массива.

*/

for (к = 0; к <= 2; к += 2) { texLine [4*к] = 0;


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