структура D3DHAL_DP2INDEXEDTRIANGLESTRIP (d3dhal.h)

Одна или несколько D3DHAL_DP2INDEXEDTRIANGLESTRIP структур анализируются из буфера команд с помощью обратного вызова D3dDrawPrimitives2, если член bCommandструктуры D3DHAL_DP2COMMAND имеет значение D3DDP2OP_INDEXEDTRIANGLESTRIP и используются для отрисовки полос соединенных треугольников с помощью индексов вершин.

Синтаксис

typedef struct _D3DHAL_DP2INDEXEDTRIANGLESTRIP {
  WORD wV[3];
} D3DHAL_DP2INDEXEDTRIANGLESTRIP, *LPD3DHAL_DP2INDEXEDTRIANGLESTRIP;

Члены

wV[3]

Указывает индекс в буфере вершин, содержащий данные координат для первой вершины полосы треугольника.

Хотя в этом элементе достаточно места для трех индексов, этот массив индексов следует рассматривать как массив переменного размера с элементами (wPrimitiveCount + 2). (wPrimitiveCount является членом структуры D3DHAL_DP2COMMAND.)

Комментарии

D3dDrawPrimitives2 должен обрабатывать индексы (wPrimitiveCount+2) из буфера команд, фактически обрабатывая структуры wPrimitiveCount D3DHAL_DP2INDEXEDTRIANGLESTRIP.

Края треугольников в полосе треугольника отображаются в следующем порядке: (wV[0], wV[1], wV[2]), (wV[1], wV[3], wV[2]), (wV[2], wV[3], wV[4]), (wV[3], wV[5], wV[4]),...

Однако для последнего треугольника в полосе треугольника края отображаются в разных порядках, если wPrimitiveCountt является нечетным, а если он четный.

  • Если wPrimitiveCount является нечетным числом, края последнего треугольника отображаются в следующем порядке: (wV[wPrimitiveCount - 1], wV[wPrimitiveCount], wV[wPrimitiveCount+ 1]).
  • Если wPrimitiveCount является четным числом, края последнего треугольника отрисовываются в следующем порядке: (wV[wPrimitiveCount- 1], wV[wPrimitiveCount+1], wV[wPrimitiveCount).
Структура D3DHAL_DP2STARTVERTEX сразу же следует за командой в буфере команд. Индексы буфера вершин относительно смещения буфера вершин, заданного элементом dwVertexOffset структуры D3DHAL_DRAWPRIMITIVES2DATA , а также базовое смещение, полученное из элемента wVStart структуры D3DHAL_DP2STARTVERTEX.

На следующем рисунке показана часть примера буфера команд, содержащая команду D3DDP2OP_INDEXEDTRIANGLESTRIP, нулевое смещение D3DHAL_DP2STARTVERTEX и логический список D3DHAL_DP2INDEXEDTRIANGLESTRIP структур. Драйвер должен обработать пять вершин из буфера вершин, отрисовав полосу из трех треугольников, определенных (v[1], v[3], v[6]), (v[3], v[4], v[6]), (v[6], v[4], v[5]).

Рисунок, показывающий буфер с командой D3DDP2OP_INDEXEDTRIANGLESTRIP, смещением D3DHAL_DP2STARTVERTEX нулевым значением и логическим списком D3DHAL_DP2INDEXEDTRIANGLESTRIP структур

Требования

Требование Значение
Заголовок d3dhal.h (включая D3dhal.h)

См. также раздел

D3DDP2OP_INDEXEDTRIANGLESTRIP

D3DHAL_DP2COMMAND

D3DHAL_DP2STARTVERTEX

D3DHAL_DRAWPRIMITIVES2DATA

D3dDrawPrimitives2