Freigeben über


D3DHAL_DP2DRAWRECTPATCH Struktur (d3dhal.h)

Nur DirectX 8.0 und höhere Versionen.

D3DHAL_DRAWRECTPATCH wird aus dem Befehlspuffer von der D3dDrawPrimitives2 Rückruf analysiert, wenn das D3DHAL_DP2COMMAND bCommand Member der D3DHAL_DP2COMMAND Struktur auf D3DDP2OP_DRAWRECTPATCH festgelegt ist und zum Rendern eines rechteckigen Patches verwendet wird.

Syntax

typedef struct _D3DHAL_DP2DRAWRECTPATCH {
  DWORD Handle;
  DWORD Flags;
} D3DHAL_DP2DRAWRECTPATCH;

Angehörige

Handle

Gibt den Ziehpunkt an, der der Oberfläche zugeordnet ist.

Flags

Gibt an, was, falls vorhanden, zusätzliche Informationen der D3DHAL_DP2DRAWRECTPATCH Datenstruktur im DP2-Datenstrom folgen.

Bemerkungen

Das Handle Member wird verwendet, um die Oberfläche einem Ziehpunkt zuzuordnen, sodass beim nächsten Zeichnen dieser Oberfläche keine Angabe der D3DRECTPATCH_INFO Datenstruktur für diesen Patch erforderlich ist. Dies ermöglicht es dem Treiber, Vorwärtsdifferenzkoeffizienten und/oder andere Informationen vorab zu komppilieren und zwischenzuspeichern, wodurch nachfolgende D3DDP2OP_DRAWRECTPATCH Token mit demselben Handle effizienter ausgeführt werden können. D3DRECTPATCH_INFO wird in der neuesten DirectX SDK-Dokumentation beschrieben.

Der tatsächliche Wert von Handle wird von der Anwendung bestimmt und ist nicht unter Laufzeitsteuerelement. Daher sollte der Treiber bereit sein, alle Werte zu bewältigen, die durch ein DWORD angegeben werden können. Der spezielle Handlewert null bedeutet, dass der Patch dynamisch ist und keine Informationen zum Vorabcomputieren oder Zwischenspeichern für diesen Patch vorhanden sind. Ein Unterzero-Wert für Handle bedeutet, dass der Patch statisch (oder mit niedriger Häufigkeit aktualisiert) ist und Vorkompilierung und Zwischenspeicherung möglich sind.

Das Flags Member wird verwendet, um zu kommunizieren, was, falls vorhanden, zusätzliche Informationen der D3DHAL_DP2DRAWRECTPATCH Datenstruktur im DP2-Datenstrom folgen. Wenn RTPATCHFLAG_HASSEGS angegeben wird, folgen vier Gleitkommawerte D3DHAL_DP2DRAWRECTPATCH im DP2-Datenstrom. Diese Floats geben den Segmentanzahlen für jeden der vier Kanten des rechteckigen Patches und überschreiben den Wert des Renderzustands D3DRS_PATCHSEGMENTS. Wenn RTPATCHFLAG_HASINFO angegeben wird, folgt im DP2-Datenstrom eine D3DRECTPATCH_INFO Datenstruktur. Wenn beide Flags angegeben werden, folgen die vier Floats, die Segmentanzahl angeben, D3DHAL_DP2DRAWRECTPATCH und die D3DRECTPATCH_INFO Struktur den Gleitkommawerten folgt.

Es gibt vier Szenarien, die ein Treiber beim Verarbeiten von D3DDP2OP_DRAWRECTPATCH verarbeiten muss.

Wenn Handle null ist, ist der Patch dynamisch und es sollte keine Vorkompilierung oder Zwischenspeicherung ausgeführt werden. In diesem Fall folgt ein D3DRECTPATCH_INFO D3DHAL_DP2DRAWRECTPATCH im DP2-Datenstrom (und die Kennzeichnung RTPATCHFLAG_HASINFO wird so festgelegt, dass die D3DRECTPATCH_INFO Datenstruktur vorhanden ist). Optional kann RTPATCHFLAG_HASSEGS festgelegt werden, um das Vorhandensein der Segmentinformationen anzugeben. Wenn dies jedoch nicht angegeben wird, sollte stattdessen der Wert des Renderzustands D3DRS_PATCHSEGMENTS verwendet werden.

Wenn Handle subzero ist und der Handlewert von einem früheren D3DDP2OP_DRAWRECTPATCH nicht angegeben wurde, gibt dies an, dass ein neuer zwischenspeicherbarer Patch gezeichnet wird. Der Treiber sollte Speicher zuweisen, um zwischengespeicherte Daten zu speichern und diese Daten der Patchhandle-Tabelle hinzuzufügen. Da dieser Patch noch nicht gesehen wurde, sollte das RTPATCHFLAG_HASINFO Flag festgelegt werden, und eine D3DRECTPATCH_INFO Struktur sollte im DP2-Datenstrom folgen. Die Laufzeit garantiert dies jedoch nicht, und der Treiber sollte das Vorhandensein der Patchinformationen überprüfen, indem das Flag getestet wird. Wenn keine Informationen angegeben werden, sollte dieses Token ignoriert werden und kein Handle in der Patchhandle-Tabelle des Treibers zugewiesen werden. Optional kann RTPATCHFLAG_HASSEGS festgelegt werden, um das Vorhandensein der Segmentinformationen anzugeben. Wenn dies jedoch nicht angegeben wird, sollte stattdessen der Wert des Renderzustands D3DRS_PATCHSEGMENTS verwendet werden.

Wenn Handle subzero ist, wurde der Handlewert durch ein früheres D3DDP2OP_DRAWRECTPATCH-Token angegeben, und das feld Flags enthält RTPATCHFLAG_HASINFO, wird die Definition für den Patch aktualisiert. Eine D3DRECTPATCH_INFO Datenstruktur folgt im DP2-Datenstrom, und der Treiber sollte diese verwenden, um Patchinformationen neu zu komppilieren und neu zwischenzuspeichern. Optional kann RTPATCHFLAG_HASSEGS festgelegt werden, um das Vorhandensein der Segmentinformationen anzugeben. Wenn dies jedoch nicht angegeben wird, sollte stattdessen der Wert des Renderzustands D3DRS_PATCHSEGMENTS verwendet werden.

Wenn Handle subzero ist, wurde der Handlewert durch ein früheres D3DDP2OP_DRAWRECTPATCH-Token angegeben, und das feld Flags enthält nicht RTPATCHFLAG_HASINFO, dann sollten die zwischengespeicherten Informationen zum Zeichnen des Patches verwendet werden. In diesem Fall werden die aktuellen Vertexdatenströme ignoriert; Stattdessen sollten die zwischengespeicherten Informationen verwendet werden. In diesem Fall ist es jedoch weiterhin möglich, dass neue Segmentinformationen angegeben werden können. Daher sollte der Treiber die Kennzeichnung RTPATCHFLAG_HASSEGS überprüfen und angegebene Segmentinformationen behandeln, auch wenn ein zwischengespeicherter Patch verwendet wird.

Der Treiber erhält eine Benachrichtigung, dass zwischengespeicherte Patchinformationen über den Renderzustand D3DRS_DELETERTPATCH freigegeben werden. Der Wert dieses Renderzustands ist der zu löschende Patch.

Anforderungen

Anforderung Wert
Header- d3dhal.h (einschließlich D3dhal.h)

Siehe auch

D3DDP2OP_DRAWRECTPATCH

D3DHAL_DP2COMMAND

D3DHAL_DP2DRAWTRIPATCH

D3DRS_DELETERTPATCH

D3dDrawPrimitives2