9.2. Наложение проективных текстур
Массив для хранения образца текстуры должен иметь размерность <ширина> х <высота>. Значение параметра <компонентЫ> - количество (от 1 до 4) цветовых компонентов (RGBA), которые желательно использовать в образце. Задавая значения параметров <уровень> и <граница>, можно выполнять тонкую настройку режима работы с образцом, и мы на методике такой настройки останавливаться не будем.
Для того чтобы выполнять наложение в программе, требуется явно разрешить этот режим с помощью функции glEnable( ):
glEnable(GL_TEXTURE_2D);
Следующий этап - указать графической системе, как текстура должна отображаться на геометрический объект. Образец текстуры имеет две координаты, s и /, которые, как правило, изменяются в интервале (0.0, 1.0). В нашем случае пара значений (0.0, 0.0) соответствует элементу массива my_texels[0] [0], а пара (1.0, 1.0)- элементу массива my_texels[511] [511] (рис. 9.11).
Назначить координаты текстуры вершинам можно с помощью функции glTexCoord2f ( ):
glTexCoord2f(s,t);
Как и при работе с цветом и нормалями, при этом устанавливается переменная состояния (текущие координаты текстуры), которая является компонентом набора переменных текущего режима работы системы. Следовательно, координаты текстуры должны быть установлены перед тем, как будет вызвана функция формирования вершины. Ниже приведен фрагмент программы, в котором текстура накладывается на четырехугольник (четырем его вершинам назначаются соответствующие координаты текстуры).
glBegin{GL_QUAD); glTexCoord2f(0.0, 0.0); glVertex2f(xl, yl, zl); glTexCoord2f(1.0, 0.0); glVertex2f(x2, y2, z2); glTexCoord2f(1.0, 1.0); glVertex2f(x3, y3, z3); glTexCoord2f(0.0, 1.0); glVertex2f(x4, y4, z4); glEnd();
Перед формированием очередной вершины можно не только назначить новые текущие координаты текстуры, но и новый цвет или направление нормали. В приведенном выше фрагменте для наложения использовался весь массив текселей, что соответствует изменению координат текстуры от 0.0 до 1.0 (рис. 9.12,а).