Partager via


PFND3DDDI_DRAWTRIPATCH fonction de rappel (d3dumddi.h)

La fonction DrawTriPatch dessine un correctif triangulaire nouveau ou mis en cache, ou met à jour la spécification d’un correctif précédemment défini.

Syntaxe

PFND3DDDI_DRAWTRIPATCH Pfnd3dddiDrawtripatch;

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

Paramètres

[in] hDevice

Handle pour le périphérique d’affichage (contexte graphique).

unnamedParam2

pData [in]

Pointeur vers une structure D3DDDIARG_DRAWTRIPATCH qui décrit le patch triangulaire à dessiner.

unnamedParam3

pInfo [in]

facultatif. Pointeur vers une structure de D3DDDITRIPATCH_INFO qui décrit des informations sur le correctif triangulaire.

unnamedParam4

pPatch [in]

facultatif. Pointeur vers une mémoire tampon qui contient trois valeurs à virgule flottante (D3DFLOAT[3]) qui fournissent le nombre de segments pour chacun des trois bords du correctif triangulaire.

Valeur retournée

DrawTriPatch retourne S_OK ou un résultat d’erreur approprié si le correctif triangulaire n’est pas correctement dessiné.

Remarques

Lorsque le runtime Microsoft Direct3D appelle la fonction DrawTriPatch du pilote d’affichage en mode utilisateur, il peut éventuellement fournir des informations dans les paramètres pInfo et pPatch . Le runtime définit des indicateurs dans le membre Flags de la structure D3DDDIARG_DRAWTRIPATCH spécifiée par pData pour indiquer s’il fournit ces informations facultatives.

Le runtime fournit une valeur UINT dans le membre Handle de D3DDDIARG_DRAWTRIPATCH pour faire référence à la surface du correctif. Chaque fois que le runtime redessine la surface du correctif, il transmet la valeur de handle de correctif et n’est pas nécessaire pour spécifier à nouveau la structure de données D3DDDITRIPATCH_INFO pour la surface de patch. Le pilote d’affichage en mode utilisateur peut précalculer et mettre en cache des coefficients de différence d’avance et d’autres informations. Par conséquent, les appels suivants à la fonction DrawTriPatch du pilote qui utilisent la même valeur de handle de correctif s’exécutent plus efficacement.

La valeur réelle dans Handle est déterminée par l’application et n’est pas sous contrôle d’exécution. Par conséquent, le pilote doit gérer toute valeur qui peut être spécifiée par un UINT.

La valeur de handle spéciale de zéro indique que le correctif est dynamique ; Par conséquent, le pilote ne peut pas précalculer ou mettre en cache les informations pour le correctif. Une valeur différente de zéro pour Handle indique que le correctif est statique (ou mis à jour avec une fréquence faible) ; Par conséquent, le pilote peut précalculer et mettre en cache des informations pour le correctif.

Le pilote doit gérer les scénarios suivants dans sa fonction DrawTriPatch :

  • Si le membre Handle est égal à zéro, le correctif est dynamique. Le pilote ne doit ni précalculer ni mettre en cache les informations pour le correctif. Dans ce cas, le runtime passe un pointeur vers une structure D3DDDITRIPATCH_INFO dans le paramètre pInfo et définit l’indicateur de RTPATCHFLAG_HASINFO dans le membre Flags de la structure D3DDDIARG_DRAWTRIPATCH pour indiquer la présence de la structure D3DDDITRIPATCH_INFO sur pInfo. Si vous le souhaitez, le runtime peut également définir l’indicateur RTPATCHFLAG_HASSEGS dans Indicateurs pour indiquer la présence des informations de segment spécifiées par le paramètre pPatch . Toutefois, si le runtime ne fournit pas d’informations de segment dans pPatch, le runtime doit plutôt utiliser la valeur d’état de rendu D3DRS_PATCHSEGMENTS.
  • Si une valeur handle différente de zéro n’a pas été spécifiée précédemment dans un appel antérieur à la fonction DrawTriPatch du pilote, le runtime dessine un nouveau correctif pouvant être mis en cache. Le pilote doit allouer de la mémoire pour stocker les données mises en cache et doit ajouter ces données à sa table de gestion des correctifs. Étant donné que le runtime n’a pas encore dessiné ce correctif, le runtime doit définir l’indicateur RTPATCHFLAG_HASINFO et passer un pointeur vers une structure D3DDDIRECTPATCH_INFO dans le paramètre pInfo . Le pilote doit case activée pour que l’indicateur RTPATCHFLAG_HASINFO vérifie la présence des informations de correctif. Si aucune information de correctif n’est spécifiée, le pilote doit ignorer l’appel DrawTriPatch et ne doit pas allouer de mémoire pour les données mises en cache dans sa table de handle de correctif. Si vous le souhaitez, le runtime peut définir l’indicateur RTPATCHFLAG_HASSEGS pour indiquer la présence des informations de segment. Toutefois, si le runtime ne fournit pas d’informations de segment dans pPatch, le runtime doit plutôt utiliser la valeur d’état de rendu D3DRS_PATCHSEGMENTS.
  • Si une valeur handle différente de zéro a été spécifiée précédemment dans un appel antérieur à la fonction DrawTriPatch du pilote et que l’indicateur RTPATCHFLAG_HASINFO est défini, le runtime met à jour la définition du correctif. Le runtime passe un pointeur vers une structure de D3DDDITRIPATCH_INFO dans le paramètre pInfo , et le pilote doit recomputer et mettre en cache les informations de correctif. Si vous le souhaitez, le runtime peut définir l’indicateur RTPATCHFLAG_HASSEGS pour indiquer la présence des informations de segment. Toutefois, si le runtime ne fournit pas d’informations de segment dans pPatch, le runtime doit plutôt utiliser la valeur d’état de rendu D3DRS_PATCHSEGMENTS.
  • Si une valeur handle différente de zéro a été spécifiée précédemment dans un appel antérieur à la fonction DrawTriPatch du pilote et que l’indicateur RTPATCHFLAG_HASINFO n’est pas défini, le runtime redessine le correctif. Le pilote doit utiliser les informations mises en cache pour dessiner le correctif. Dans ce cas, le pilote ignore les flux de vertex actuels et les informations mises en cache sont utilisées à la place. Toutefois, le runtime peut toujours spécifier de nouvelles informations de segment ; Par conséquent, le pilote doit case activée pour l’indicateur RTPATCHFLAG_HASSEGS et gérer les informations de segment spécifiées, même s’il utilise un correctif mis en cache.
Le pilote reçoit une notification pour publier les informations de correctif mis en cache via l’état de rendu D3DRS_DELETERTPATCH. La valeur de cet état de rendu est le correctif à supprimer.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

D3DDDIARG_DRAWTRIPATCH

D3DDDI_DEVICEFUNCS