Всем вершинам шара, изображенного на рис. 21.4 в центре, был присвоен одинаковый цвет, но из-за условий освещения грани окрашены в различные оттенки серого цвета. Чтобы определить цвет плоской грани с учетом освещенности, необходимо вычислять скалярное произведение нормали к грани на вектор, направленный на источник света. Поэтому в описание вершин могут включаться также компоненты нормали (Nx, Ny, Nz). Нормаль хранят в вершине, а не делают частью описания грани. Когда многогранник является аппроксимацией шара или другой криволинейной поверхности, в вершинах хранят нормали не к граням, а к той исходной поверхности, которая приближенно заменена многогранником. В данном примере нормали к вершинам должны быть направлены по радиусам описанного вокруг многогранника шара. Это позволяет после вычисления цвета вершин линейно аппроксимировать изменение цвета в промежуточных точках между вершинами и получить показанное справа изображение шара. При довольно мелких гранях и градиентной закраске наблюдатель не замечает, что контуры объектов с криволинейными поверхностями имеют форму многоугольников.

Для повышения реалистичности изображения на поверхность накладывается растровая картинка, называемая текстурой. Текстура обычно не накладывается на одну грань, а покрывает собою весь объект или участок поверхности объекта из нескольких граней. В этом случае в каждой вершине необходимо указать, какая точка картинки (тексел) совместится с этой вершиной при наложении текстуры на поверхность. Поэтому в описание вершины может входить еще два числа (u, v), задающие в системе координат картинки ту точку, которая будет совмещена с вершиной.

Цвет точек текстуры может смешиваться с цветом соответствующих точек грани, вычисленным с учетом освещенности и выбранного материала. Современные адаптеры позволяют накладывать на одну грань несколько текстур одновременно, смешивая цвета текселов. В этом случае вершина должна хранить несколько пар текстурных координат (u, v).

Не все перечисленные выше данные обязательно входят в описание вершины. Библиотека DirectX использует при выводе примитивов указатель на структуру данных, которая хранит только необходимую информацию. Если не используются текстуры, в описании вершины нет координат (u, v), если нужно использовать


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