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

Разблокирование буфера осуществляется с помощью метода unlock.

Копирование значение всех точек в буфер производится с помощью API-функции memcpy.

memcpy(pBuf, svVortexList, sizeof(sVertex) * iVertsNum);

vBuffer->Unlock();

Буфер индексов вершин

Рассмотрим построение первой грани (рис. 2.9). Чтобы построить этот рисунок, необходимо сначала от точки 0 нарисовать отрезок к точке 1, потом от точки 1 к точке 2. После этого Direct3D замыкает точку 2 и точку 0, и полученный треугольник закрашивается указанными цветами.

Далее, строим второй треугольник. Для этого можно использовать уже существующие в буфере точки 1 и 2, и добавляем только точку 3. При этом мы должны указать в буфере индексов, что треугольник должен строиться с помощью линий от точки 2 к точке 1 и затем от точки 1 к точке 3.

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


На рис. 2.10 треугольник 1 строится по вершинам в следующей последовательности: 0-1-2. Получается построение по часовой стрелке, а значит, перед нами передняя сторона, которая будет закрашена, поэтому левый верхний треугольник закрашен серым цветом. Второй треугольник строится в последовательности 1-2-3. Это построение выполняется уже против часовой стрелки, а значит, перед нами обратная сторона треугольника, а видимая сейчас сторона треугольника не будет закрашена, а останется белой.

Следующий массив чисел определяет индексы, по которым будут строиться треугольники:

const unsigned short Idxes[]={


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: