PFND3DDDI_DRAWRECTPATCH fonction de rappel (d3dumddi.h)

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

Syntaxe

PFND3DDDI_DRAWRECTPATCH Pfnd3dddiDrawrectpatch;

HRESULT Pfnd3dddiDrawrectpatch(
  [in] HANDLE hDevice,
       const D3DDDIARG_DRAWRECTPATCH *unnamedParam2,
       const D3DDDIRECTPATCH_INFO *unnamedParam3,
       const FLOAT *unnamedParam4
)
{...}

Paramètres

[in] hDevice

Handle de l’appareil d’affichage (contexte graphique).

unnamedParam2

pData [in]

Pointeur vers une structure D3DDDIARG_DRAWRECTPATCH qui décrit le correctif rectangulaire à dessiner.

unnamedParam3

pInfo [in]

Optionnel. Pointeur vers une structure D3DDDIRECTPATCH_INFO qui décrit des informations sur le correctif rectangulaire.

unnamedParam4

pPatch [in]

Optionnel. Pointeur vers une mémoire tampon qui contient quatre valeurs à virgule flottante (D3DFLOAT[4]) qui fournissent le nombre de segments pour chacun des quatre bords du correctif rectangulaire.

Valeur de retour

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

Remarques

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

Le runtime fournit une valeur UINT dans le Handle membre de D3DDDIARG_DRAWRECTPATCH pour faire référence à l’aire de correctif. Chaque fois que le runtime redessine l’aire de correctif, il transmet la valeur du handle de correctif et n’est pas nécessaire pour spécifier à nouveau la structure de données D3DDDIRECTPATCH_INFO pour l’aire de correctif. Le pilote d’affichage en mode utilisateur peut précomputer et mettre en cache des coefficients de différence de transfert et toute autre information. Par conséquent, les appels suivants aux DrawRectPatch du pilote fonction 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 n’importe quelle valeur qui peut être spécifiée par un UINT.

La valeur handle spéciale de zéro indique que le correctif est dynamique ; par conséquent, le pilote ne peut pas précomputer ou mettre en cache des 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écomputer et mettre en cache des informations pour le correctif.

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

  • Si le Handle membre est égal à zéro, le correctif est dynamique. Le pilote ne doit ni précomputer ni mettre en cache les informations pour le correctif. Dans ce cas, le runtime passe un pointeur vers une structure de D3DDDIRECTPATCH_INFO dans le paramètre pInfo et définit l’indicateur de RTPATCHFLAG_HASINFO dans le membre indicateurs de de la structure D3DDDIARG_DRAWRECTPATCH pour indiquer la présence de la structure D3DDDIRECTPATCH_INFO à 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 à pPatch, le runtime doit utiliser plutôt la valeur d’état de rendu D3DRS_PATCHSEGMENTS.
  • Si une valeur de handle non nulle n’a pas été spécifiée précédemment dans un appel antérieur à la fonction DrawRectPatch du pilote, le runtime dessine un nouveau correctif mis en cache. Le pilote doit allouer de la mémoire pour stocker des données mises en cache et ajouter ces données à sa table de handle de correctifs. Étant donné que le runtime n’a pas dessiné précédemment ce correctif, le runtime doit définir l’indicateur RTPATCHFLAG_HASINFO et passer un pointeur à une structure D3DDDIRECTPATCH_INFO dans le paramètre pInfo. Le pilote doit vérifier l’indicateur de RTPATCHFLAG_HASINFO pour vérifier la présence des informations de correctif. Si aucune information de correctif n’est spécifiée, le pilote doit ignorer l’appel DrawRectPatch et ne 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 de RTPATCHFLAG_HASSEGS pour indiquer la présence des informations de segment. Toutefois, si le runtime ne fournit pas d’informations de segment à pPatch, le runtime doit utiliser plutôt la valeur d’état de rendu D3DRS_PATCHSEGMENTS.
  • Si une valeur de handle différente de zéro a été spécifiée précédemment dans un appel antérieur à la fonction DrawRectPatch du pilote et que l’indicateur RTPATCHFLAG_HASINFO est défini, le runtime met à jour la définition du correctif. Le runtime transmet un pointeur à une structure D3DDDIRECTPATCH_INFO dans le paramètre pInfo, et le pilote doit récomputer et recacher les informations de correctif. Si vous le souhaitez, le runtime peut définir l’indicateur de RTPATCHFLAG_HASSEGS pour indiquer la présence des informations de segment. Toutefois, si le runtime ne fournit pas d’informations de segment à pPatch, le runtime doit utiliser plutôt la valeur d’état de rendu D3DRS_PATCHSEGMENTS.
  • Si une valeur de handle non nulle a été spécifiée précédemment dans un appel antérieur à la fonction DrawRectPatch 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 rechercher l’indicateur de 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 libérer 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.

Exigences

Exigence Valeur
client minimum pris en charge Disponible dans Windows Vista et versions ultérieures des systèmes d’exploitation Windows.
plateforme cible Bureau
d’en-tête d3dumddi.h (include D3dumddi.h)

Voir aussi

D3DDDIARG_DRAWRECTPATCH

D3DDDI_DEVICEFUNCS