netlib.narod.ru< Назад | Оглавление | Далее >

6.1. Координаты текстур

Direct3D использует для текстур систему координат, образованную горизонтальной осью U и вертикальной осью V. Пара координат (u, v) идентифицирует элемент текстуры, называемый текселем (texel). Обратите внимание, что ось V направлена вниз (рис. 6.2).


Рис. 6.2. Система координат текстуры

Рис. 6.2. Система координат текстуры иногда называемая пространством текстуры


Кроме того, обратите внимание, на нормализованные координаты в диапазоне [0, 1], которые обеспечивают для Direct3D работу со значениями из фиксированного диапазона, не зависящего от размеров конкретной текстуры.

Для каждой треугольной грани в трехмерном пространстве мы должны определить соответствующий треугольный фрагмент текстуры, который будет наложен на эту грань (рис. 6.3).


Рис. 6.3. Накладываемый на грань фрагмент текстуры

Рис. 6.3. Слева изображена треугольная грань в трехмерном пространстве, а справа — двухмерный треугольный фрагмент текстуры, который должен быть наложен на данную грань


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

struct Vertex
{
     float _x, _y, _z;
     float _nx, _ny, _nz;
     float _u, _v;      // координаты текстуры

     static const DWORD FVF;
};
const DWORD Vertex::FVF = D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1;

Обратите внимание, что к описанию формата вершины мы добавили константу D3DFVF_TEX1, которая говорит о том, что наша структура данных вершины содержит пару координат текстуры.

Теперь для каждого треугольника, образованного тремя объектами Vertex также указывается соответствующий треугольный фрагмент текстуры, заданный с помощью координат текстуры.

ПРИМЕЧАНИЕ
Хотя мы задаем соответствие фрагмента текстуры и треугольной грани в трехмерном пространстве, наложение текстур не выполняется до этапа растеризации, на котором треугольная грань в трехмерном пространстве уже преобразована в пространство экрана.

netlib.narod.ru< Назад | Оглавление | Далее >

Сайт управляется системой uCoz