На следующем этапе нужно задать настройки созданной текстуры. Следует указать способ фильтрации и чувствительность текстуры к освещению. Способ наложения рисунка при текстурных координатах, больших чем единица, задавать не нужно, так как в данном случае размер текстуры совпадает с размером поверхности и точки с координатами и = 0.0 и и = 1.0 будут совмещаться с полюсами Земли.

Нужно включить в класс GLOBE идентификатор созданной текстуры, а в описание вершин сетки - текстурные координаты. Можно также хранить текстурные координаты вершин в отдельном массиве и создавать его после получения сетки в классе GLOBE. В каждую из вершин потребуется записать ее текстурные координаты, то есть указать координаты той точки в системе картинки, которая должна совместиться с данной вершиной. Эта операция не связана с созданием текстуры, поэтому ее можно выполнить до или после создания текстуры. Важно, чтобы во время вывода изображения передаваемая в конвейер вершина имела текстурные координаты.

Перед выводом изображения необходимо включить применение текстуры и указать номер той из созданных текстур, которая будет использоваться конвейером. В процессе вывода примитивов до передачи в конвейер позиции очередной вершины необходимо передать ее текстурные координаты.

Изменения в программу вывода освещенного шара, необходимые для наложения текстуры, внесены в демонстрационный проект Шар_и_Текстура. При выборе в этом проекте первого пункта меню на экран выводится изображение глобуса (рис. 22.8).

Инициализация библиотек и вывод примитивов

Наложение текстуры

Рис. 22.8. Наложение текстуры

В листинге 22.23 приведен код измененных классов.

Листинг 22.23

typedef struct JEXVERTEX1 {

GLdouble x.y.z; GLdouble Nx.Ny.Nz"opengl4_291.html">⇐ Предыдущая| |Следующая ⇒