D3DHAL_DP2INDEXEDTRIANGLELIST-Struktur (d3dhal.h)
Mindestens eine D3DHAL_DP2INDEXEDTRIANGLELIST Strukturen werden vom D3dDrawPrimitives2-Rückruf aus dem Befehlspuffer analysiert, wenn das bCommand-Element der D3DHAL_DP2COMMAND-Struktur auf D3DDP2OP_INDEXEDTRIANGLELIST festgelegt ist, und zum Rendern einer Sequenz nicht verbundener Dreiecke mithilfe von Vertexindizes verwendet werden.
Syntax
typedef struct _D3DHAL_DP2INDEXEDTRIANGLELIST {
WORD wV1;
WORD wV2;
WORD wV3;
WORD wFlags;
} D3DHAL_DP2INDEXEDTRIANGLELIST, *LPD3DHAL_DP2INDEXEDTRIANGLELIST;
Member
wV1
Gibt den Index in der Vertexpufferposition an, die Koordinatendaten für den ersten Scheitelpunkt des Dreiecks enthält.
wV2
Gibt den Index zum Vertexpufferspeicherort an, der Koordinatendaten für den zweiten Scheitelpunkt des Dreiecks enthält.
wV3
Gibt den Index zum Vertexpufferspeicherort an, der Koordinatendaten für den dritten Scheitelpunkt des Dreiecks enthält.
wFlags
Gibt die Flags an, die beschreiben, wie der Treiber das Dreieck rendern soll. Dieser Member kann ein bitweiser OR der folgenden Werte sein:
Kennzeichnen | Bedeutung |
---|---|
D3DTRIFLAG_EDGEENABLE1 | Der Treiber sollte den Dreiecksrand zwischen wV1 und wV2 rendern, wenn der Füllmodus D3DFILL_WIREFRAME ist. |
D3DTRIFLAG_EDGEENABLE2 | Der Treiber sollte den Dreiecksrand zwischen wV2 und wV3 rendern, wenn der Füllmodus D3DFILL_WIREFRAME ist. |
D3DTRIFLAG_EDGEENABLE3 | Der Treiber sollte den Dreiecksrand zwischen wV3 und wV1 rendern, wenn der Füllmodus D3DFILL_WIREFRAME ist. |
D3DTRIFLAG_EDGEENABLETRIANGLE | Der Treiber sollte alle Dreiecksränder rendern, wenn der Füllmodus D3DFILL_WIREFRAME ist. |
Hinweise
D3dDrawPrimitives2 sollte wPrimitiveCount * 3 Indizes aus dem Befehlspuffer verarbeiten und wPrimitiveCount D3DHAL_DP2INDEXEDTRIANGLELIST Strukturen verarbeiten. Der Wert von wPrimitiveCount wird in der D3DHAL_DP2COMMAND-Struktur angegeben.
Der Treiber sollte insgesamt wPrimitiveCount*3 Scheitelpunkte aus dem Scheitelpunktpuffer verarbeiten, drei Scheitelpunkte pro Dreieck, für den aktuellen Befehl. Die Sequenz der gerenderten Dreiecke ist (wV1₀, wV2₀, wV3₀), (wV1₁, wV2₁, wV3₁), ..., (wV1n, wV2n, wV3n), wobei n gleich (wPrimitiveCount- 1) ist. Der Treiber sollte die Scheitelpunkte basierend auf dem aktuellen Befehl wie folgt berechnen:
Wenn der Befehl D3DDP2OP_INDEXEDTRIANGLELIST ist, sind die Indizes im Vertexpuffer relativ zum Vertexpufferoffset, der vom dwVertexOffset-Element der D3DHAL_DRAWPRIMITIVES2DATA-Struktur angegeben wird.
Wenn der Befehl D3DDP2OP_INDEXEDTRIANGLELIST2 ist, gibt es eine D3DHAL_DP2STARTVERTEX-Struktur , die dem Befehl im Befehlspuffer unmittelbar folgt. Die Indizes im Vertexpuffer sind relativ zum Vertexpufferoffset, der durch dwVertexOffset angegeben wird, und dem Basisoffset, der vom wVStart-Element der D3DHAL_DP2STARTVERTEX-Struktur abgerufen wird.
Die folgende Abbildung zeigt einen Teil eines Beispielbefehlspuffers, der einen D3DDP2OP_INDEXEDTRIANGLELIST-Befehl und zwei D3DHAL_DP2INDEXEDTRIANGLELIST-Strukturen enthält. Der Treiber sollte zwei Dreiecke âˆ' mit aktivierten Kanten âˆ' mit den folgenden sechs Scheitelpunkten aus dem Vertexpuffer zeichnen: (v[3], v[4], v[5]), (v[0], v[1], v[2]).
In ähnlicher Weise zeigt die folgende Abbildung einen Teil eines Beispielbefehlspuffers, der einen D3DDP2OP_INDEXEDTRIANGLELIST2-Befehl, einen D3DHAL_DP2STARTVERTEX Offset und zwei D3DHAL_DP2INDEXEDTRIANGLELIST-Strukturen enthält. Der Treiber sollte sechs Scheitelpunkte aus dem Vertexpuffer verarbeiten und dabei zwei Dreiecke rendern, die durch (v[5], v[6], v[7]), (v[2], v[3], v[4]) definiert sind.Anforderungen
Anforderung | Wert |
---|---|
Header | d3dhal.h (einschließlich D3dhal.h) |
Weitere Informationen
D3DDP2OP_INDEXEDTRIANGLELIST