D3DHAL_DRAWPRIMITIVES2DATA Struktur (d3dhal.h)
Die D3DHAL_DRAWPRIMITIVES2DATA-Struktur enthält die Informationen, die die D3dDrawPrimitives2-Funktion zum Rendern von Grundtypen benötigt.
Syntax
typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwVertexType;
LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
union {
LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
LPVOID lpVertices;
};
DWORD dwVertexOffset;
DWORD dwVertexLength;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
union {
DWORD dwVertexSize;
HRESULT ddrval;
};
DWORD dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;
Member
dwhContext
Gibt das Kontexthandle des Direct3D-Geräts an.
dwFlags
Gibt Flags an, die dem Treiber zusätzliche Anweisungen oder Informationen vom Treiber bereitstellen. Dieser Member kann ein bitweises OR der folgenden Werte sein:
Wert | Bedeutung |
---|---|
D3DHALDP2_EXECUTEBUFFER | Die Befehls- und Vertexpuffer wurden im Systemspeicher erstellt. Der Treiber sollte das Statusarray aktualisieren, auf das lpdwRStates zeigt. Dieses Flag wird nur von Direct3D festgelegt. |
D3DHALDP2_REQCOMMANDBUFSIZE | Der Treiber muss in der Lage sein, den aktuellen Befehlspuffer um mindestens die in dwReqCommandBufSize angegebene Größe zu erhöhen. Treiber, die das Multibuffering von Befehlspuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Flag wird nur von Direct3D festgelegt. |
D3DHALDP2_REQVERTEXBUFSIZE | Der Treiber muss in der Lage sein, einen Vertexpuffer von mindestens der in dwReqCommandBufSize angegebenen Größe zuzuweisen. Treiber, die das Multibuffering von Vertexpuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Flag wird nur von Direct3D festgelegt. |
D3DHALDP2_SWAPCOMMANDBUFFER | Der Treiber kann den Puffer, auf den lpDDCommands zeigt, durch einen neuen Befehlspuffer austauschen und sofort zurückgeben, wobei der ursprüngliche Puffer asynchron verarbeitet wird, während Direct3D den neuen Befehlspuffer auffüllt. Treiber, die das Multibuffering von Befehlspuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Flag wird nur von Direct3D festgelegt. |
D3DHALDP2_SWAPVERTEXBUFFER | Der Treiber kann den Puffer, auf den lpDDVertex oder lpVertices zeigt, durch einen neuen Vertexpuffer austauschen und sofort zurückgeben, wobei der ursprüngliche Puffer asynchron verarbeitet wird, während Direct3D den neuen Vertexpuffer auffüllt. Treiber, die das Multibuffering von Vertexpuffern nicht unterstützen, können dieses Flag ignorieren. Dieses Flag wird nur von Direct3D festgelegt. |
D3DHALDP2_USERMEMVERTICES | Der lpVertices-Member ist gültig, sodass der Treiber die Scheitelpunktdaten aus dem vom Benutzer zugewiesenen Speicher abrufen sollte, auf den lpVertices verweist. Dieses Flag wird nur von Direct3D festgelegt. |
D3DHALDP2_VIDMEMCOMMANDBUF | Der vom Treiber als Swappuffer zugewiesene Befehlspuffer befindet sich nicht im Systemspeicher. Dieses Flag kann von Treibern festgelegt werden, die das Multibuffering von Befehlspuffern unterstützen. |
D3DHALDP2_VIDMEMVERTEXBUF | Der vom Treiber als Swappuffer zugeordnete Vertexpuffer befindet sich nicht im Systemspeicher. Dieses Flag kann von Treibern festgelegt werden, die das Multibuffering von Vertexpuffern unterstützen. |
dwVertexType
Identifiziert die FVF der Daten im Vertexpuffer; DwVertexType gibt also an, welche Datenfelder pro Vertex im Vertexpuffer vorhanden sind, auf den lpDDVertex oder lpVertices zeigt. Dieser Member kann ein bitweises OR der Werte in der folgenden Tabelle sein. Es ist nur eines der D3DFVF_TEXx-Flags festgelegt.
Wert | Bedeutung |
---|---|
D3DFVF_DIFFUSE | Jeder Scheitelpunkt hat eine diffuse Farbe. |
D3DFVF_SPECULAR | Jeder Scheitelpunkt hat eine Glanzfarbe. |
D3DFVF_TEX0 | Mit den Vertexdaten werden keine Texturkoordinaten bereitgestellt. |
D3DFVF_TEX1 | Jeder Scheitelpunkt verfügt über einen Satz von Texturkoordinaten. |
D3DFVF_TEX2 | Jeder Scheitelpunkt verfügt über zwei Sätze von Texturkoordinaten. |
D3DFVF_TEX3 | Jeder Scheitelpunkt verfügt über drei Sätze von Texturkoordinaten. |
D3DFVF_TEX4 | Jeder Scheitelpunkt verfügt über vier Sätze von Texturkoordinaten. |
D3DFVF_TEX5 | Jeder Scheitelpunkt verfügt über fünf Sätze von Texturkoordinaten. |
D3DFVF_TEX6 | Jeder Scheitelpunkt verfügt über sechs Sätze von Texturkoordinaten. |
D3DFVF_TEX7 | Jeder Scheitelpunkt verfügt über sieben Sätze von Texturkoordinaten. |
D3DFVF_TEX8 | Jeder Scheitelpunkt verfügt über acht Sätze von Texturkoordinaten. |
D3DFVF_XYZRHW | Jeder Scheitelpunkt verfügt über x-, y-, z- und w-Koordinaten. Dieses Flag wird immer festgelegt. |
lpDDCommands
dwCommandOffset
dwCommandLength
Gibt die Anzahl der Bytes gültiger Befehlsdaten auf der Oberfläche an, auf die lpDDCommands ab dwCommandOffset zeigt.
lpDDVertex
Verweist auf die DD_SURFACE_LOCAL-Struktur , die die DirectDraw-Oberfläche mit den Vertexdaten identifiziert, wenn das flag D3DHALDP2_USERMEMVERTICES in dwFlags nicht festgelegt ist. Bildet eine Vereinigung mit lpVertices.
lpVertices
Verweist auf einen Speicherblock im Benutzermodus, der Scheitelpunktdaten enthält, wenn das flag D3DHALDP2_USERMEMVERTICES in dwFlags festgelegt ist.
dwVertexOffset
Gibt die Anzahl von Bytes in die Oberfläche an, auf die von lpDDVertex oder lpVertices verwiesen wird , auf die die Vertexdaten beginnen.
dwVertexLength
Gibt die Anzahl von Scheitelpunkten an, für die gültige Daten auf der Oberfläche vorhanden sind, auf die von lpDDVertex oder lpVertices verwiesen wird. Diese gültigen Daten beginnen bei dwVertexOffset.
dwReqVertexBufSize
Gibt die Mindestanzahl von Bytes an, die der Treiber für den Swap-Vertexpuffer zuordnen muss. Dieser Member ist nur gültig, wenn das flag D3DHALDP2_REQVERTEXBUFSIZE festgelegt ist. Treiber, die das Multibuffering von Vertexpuffern nicht unterstützen, sollten diesen Member ignorieren.
dwReqCommandBufSize
Gibt die Mindestanzahl von Bytes an, um die der Treiber den Swapbefehlspuffer erhöhen muss. Dieser Member ist nur gültig, wenn das flag D3DHALDP2_REQCOMMANDBUFSIZE festgelegt ist. Treiber, die das Multibuffering von Befehlspuffern nicht unterstützen, sollten diesen Member ignorieren.
lpdwRStates
Verweist auf ein Renderzustandsarray, das der Treiber aktualisieren soll, wenn er Renderzustandsbefehle aus dem Befehlspuffer analysiert. Der Treiber sollte dieses Array nur aktualisieren, wenn das flag D3DHALDP2_EXECUTEBUFFER in dwFlags festgelegt ist. Der Treiber sollte die D3DRENDERSTATETYPE aufgezählten Typen verwenden, um das entsprechende Element des Renderzustandsarrays zu aktualisieren.
dwVertexSize
Gibt die Größe der einzelnen Scheitelpunkte in Bytes an. Dieses Element bildet eine Union mit ddrval.
ddrval
Gibt den Speicherort an, an dem der Treiber den Rückgabewert von D3dDrawPrimitives2 schreibt. D3D_OK gibt den Erfolg an. Andernfalls sollte der Treiber den entsprechenden D3DERR_Xxx-Fehlercode zurückgeben. Weitere Informationen finden Sie unter Rückgabecodes für Direct3D-Treiberrückrufe.
Wert | Bedeutung |
---|---|
D3D_OK | Der Vorgang wurde erfolgreich abgeschlossen. |
D3DERR_COMMAND_UNPARSED | Der Treiber erfordert die Direct3D-Runtime, um den Ausführungspuffer zu analysieren. |
dwErrorOffset
Auf jede D3DHAL_DP2RESPONSEQUERY folgen die folgenden Daten im Zusammenhang mit der Abfrage:
- BOOL für D3DQUERYTYPE_EVENT
- DWORD für D3DQUERYTYPE_OCCLUSION
- D3DDEVINFO_VCACHE Struktur für D3DQUERYTYPE_VCACHE
Hinweise
Beachten Sie, dass der dwVertexOffset-Member Werte in Bytes angibt. das dwVertexLength-Element gibt Werte in Scheitelpunkten an.
Um die gültigen Daten in Bytes zu berechnen, die auf der Oberfläche bei lpDDVertex oder lpVertices vorhanden sind, multiplizieren Sie den Wert in dwVertexLength mit dem Wert in dwVertexSize.
Anforderungen
Anforderung | Wert |
---|---|
Header | d3dhal.h (include D3dhal.h) |