Partager via


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 défini précédemment.

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]

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

unnamedParam4

pPatch [in]

facultatif. 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 retournée

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, il peut éventuellement fournir des informations dans le pInfo et les paramètres. Le runtime définit des indicateurs dans le membre Indicateurs 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 membre Handle de D3DDDIARG_DRAWRECTPATCH pour faire référence à la surface de correctif. Chaque fois que le runtime redessine la surface de correctif, il passe la valeur du handle de correctif et n’est pas obligé de spécifier à nouveau la structure de données D3DDDIRECTPATCH_INFO pour la surface de correctif. Le pilote d’affichage en mode utilisateur peut précalculer et mettre en cache les coefficients de différence de transfert et toute autre information. Par conséquent, les appels suivants à la fonction DrawRectPatch 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 toutes les valeurs qui peuvent être spécifiées 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é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 DrawRectPatch :

  • Si le membre Handle 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 transmet un pointeur vers une structure de D3DDDIRECTPATCH_INFO dans le paramètre pInfo et définit l’indicateur RTPATCHFLAG_HASINFO dans le membre Flags de la structure D3DDDIARG_DRAWRECTPATCH pour indiquer la présence de la structure D3DDDIRECTPATCH_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 sur 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 dans un appel antérieur à la fonction DrawRectPatch 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 poignée de 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 de l’indicateur 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 doit pas allouer de mémoire pour les données mises en cache dans sa table de gestion corrective. 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 sur 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 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 vers une structure D3DDDIRECTPATCH_INFO dans le paramètre pInfo , et le pilote doit recompiler 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 sur 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 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 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 les 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_DRAWRECTPATCH

D3DDDI_DEVICEFUNCS