Разблокирование буфера осуществляется с помощью метода 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[]={