Freigeben über


PFND3DDDI_DRAWTRIPATCH Rückruffunktion (d3dumddi.h)

Die DrawTriPatch--Funktion zeichnet einen neuen oder zwischengespeicherten dreieckigen Patch oder aktualisiert die Spezifikation eines zuvor definierten Patches.

Syntax

PFND3DDDI_DRAWTRIPATCH Pfnd3dddiDrawtripatch;

HRESULT Pfnd3dddiDrawtripatch(
  [in] HANDLE hDevice,
       const D3DDDIARG_DRAWTRIPATCH *unnamedParam2,
       const D3DDDITRIPATCH_INFO *unnamedParam3,
       const FLOAT *unnamedParam4
)
{...}

Parameter

[in] hDevice

Ein Handle für das Anzeigegerät (Grafikkontext).

unnamedParam2

pData- [in]

Ein Zeiger auf eine D3DDDIARG_DRAWTRIPATCH Struktur, die den zu zeichnenden dreieckigen Patch beschreibt.

unnamedParam3

pInfo- [in]

Wahlfrei. Ein Zeiger auf eine D3DDDITRIPATCH_INFO Struktur, die Informationen zum dreieckigen Patch beschreibt.

unnamedParam4

pPatch- [in]

Wahlfrei. Ein Zeiger auf einen Puffer, der drei Gleitkommawerte (D3DFLOAT[3]) enthält, die die Segmentanzahl für jeden der drei Kanten des dreieckigen Patches bereitstellen.

Rückgabewert

DrawTriPatch- gibt S_OK oder ein entsprechendes Fehlerergebnis zurück, wenn der dreieckige Patch nicht erfolgreich gezeichnet wird.

Bemerkungen

Wenn die Microsoft Direct3D-Laufzeit die DrawTriPatch--Funktion des Benutzermodus aufruft, kann optional Informationen in den pInfo- und pPatch- Parametern bereitgestellt werden. Die Laufzeit legt Flags im Flags Member der D3DDDIARG_DRAWTRIPATCH Struktur fest, die von pData- angegeben wird, um anzugeben, ob diese optionalen Informationen bereitgestellt werden.

Die Laufzeit stellt einen UINT-Wert im Handle Member von D3DDDIARG_DRAWTRIPATCH bereit, um auf die Patchoberfläche zu verweisen. Wenn die Laufzeit die Patchoberfläche neu zeichnet, übergibt sie den Patchziehpunktwert und muss die D3DDDITRIPATCH_INFO Datenstruktur für die Patchoberfläche nicht erneut angeben. Der Anzeigetreiber für den Benutzermodus kann vorwärtsdifferenzierte Koeffizienten und andere Informationen vorkompilieren und zwischenspeichern. Daher werden nachfolgende Aufrufe der DrawTriPatch-Funktion des Treibers, die den gleichen Patchhandle-Wert verwenden, effizienter ausgeführt.

Der tatsächliche Wert in Handle wird von der Anwendung bestimmt und nicht unter Laufzeitsteuerelement. Daher muss der Treiber einen beliebigen Wert verarbeiten, der von einem UINT angegeben werden kann.

Der spezielle Handle Wert null gibt an, dass der Patch dynamisch ist; Daher kann der Treiber keine Informationen für den Patch vorkompilieren oder zwischenspeichern. Ein Wert ungleich null für Handle gibt an, dass der Patch statisch (oder mit niedriger Häufigkeit aktualisiert) ist; Daher kann der Treiber Informationen für den Patch vorab komppilieren und zwischenspeichern.

Der Treiber muss die folgenden Szenarien in der DrawTriPatch--Funktion behandeln:

  • Wenn das Handle Member null ist, ist der Patch dynamisch. Der Treiber sollte weder vorab komputet noch Cacheinformationen für den Patch speichern. In diesem Fall übergibt die Laufzeit einen Zeiger an eine D3DDDITRIPATCH_INFO Struktur im pInfo Parameter und legt das RTPATCHFLAG_HASINFO Flag im Flags Member der D3DDDIARG_DRAWTRIPATCH Struktur fest, um das Vorhandensein der D3DDDITRIPATCH_INFO Struktur bei pInfoanzugeben. Optional kann die Laufzeit auch das RTPATCHFLAG_HASSEGS Flag in Flags festlegen, um anzugeben, dass die Segmentinformationen vorhanden sind, die den pPatch Parameter angegeben werden. Wenn die Laufzeit jedoch keine Segmentinformationen bei pPatch-liefert, sollte die Laufzeit stattdessen den D3DRS_PATCHSEGMENTS Renderzustandswert verwenden.
  • Wenn in einem früheren Aufruf der DrawTriPatch--Funktion des Treibers noch kein Handle-Wert angegeben wurde, zeichnet die Laufzeit einen neuen zwischengespeicherten Patch. Der Treiber sollte Speicher zuweisen, um zwischengespeicherte Daten zu speichern und diese Daten der Patchhandle-Tabelle hinzuzufügen. Da die Laufzeit diesen Patch noch nicht gezeichnet hat, sollte die Laufzeit das RTPATCHFLAG_HASINFO Flag festlegen und einen Zeiger an eine D3DDDIRECTPATCH_INFO Struktur im pInfo Parameter übergeben. Der Treiber muss überprüfen, ob die RTPATCHFLAG_HASINFO Kennzeichnung vorhanden ist, um das Vorhandensein der Patchinformationen zu überprüfen. Wenn keine Patchinformationen angegeben werden, sollte der Treiber den DrawTriPatch Aufruf ignorieren und nicht Speicher für zwischengespeicherte Daten in der Patchhandle-Tabelle zuordnen. Optional kann die Laufzeit das RTPATCHFLAG_HASSEGS Flag festlegen, um das Vorhandensein der Segmentinformationen anzugeben. Wenn die Laufzeit jedoch keine Segmentinformationen bei pPatch-liefert, sollte die Laufzeit stattdessen den D3DRS_PATCHSEGMENTS Renderzustandswert verwenden.
  • Wenn in einem früheren Aufruf der DrawTriPatch--Funktion des Treibers ein nichtzero Handle-Wert angegeben wurde und das flag RTPATCHFLAG_HASINFO festgelegt ist, aktualisiert die Laufzeit die Definition für den Patch. Die Laufzeit übergibt einen Zeiger an eine D3DDDITRIPATCH_INFO Struktur im pInfo--Parameter, und der Treiber muss die Patchinformationen neu kompensieren und erneut zwischenspeichern. Optional kann die Laufzeit das RTPATCHFLAG_HASSEGS Flag festlegen, um das Vorhandensein der Segmentinformationen anzugeben. Wenn die Laufzeit jedoch keine Segmentinformationen bei pPatch-liefert, sollte die Laufzeit stattdessen den D3DRS_PATCHSEGMENTS Renderzustandswert verwenden.
  • Wenn in einem früheren Aufruf der DrawTriPatch--Funktion des Treibers ein nichtzero Handle-Wert angegeben wurde und das flag RTPATCHFLAG_HASINFO nicht festgelegt ist, wird der Patch erneut durch die Laufzeit neu gezeichnet. Der Treiber sollte die zwischengespeicherten Informationen verwenden, um den Patch zu zeichnen. In diesem Fall ignoriert der Treiber die aktuellen Vertexdatenströme, und stattdessen werden die zwischengespeicherten Informationen verwendet. Die Laufzeit kann jedoch weiterhin neue Segmentinformationen angeben; Daher sollte der Treiber nach dem RTPATCHFLAG_HASSEGS Flag suchen und angegebene Segmentinformationen verarbeiten, auch wenn er einen zwischengespeicherten Patch verwendet.
Der Treiber erhält eine Benachrichtigung, um zwischengespeicherte Patchinformationen über den D3DRS_DELETERTPATCH Renderzustand freizugeben. Der Wert dieses Renderzustands ist der zu löschende Patch.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform- Desktop
Header- d3dumddi.h (include D3dumddi.h)

Siehe auch

D3DDDIARG_DRAWTRIPATCH

D3DDDI_DEVICEFUNCS