PFND3D10DDI_RESOURCECOPYREGION fonction de rappel (d3d10umddi.h)

La fonction ResourceCopyRegion copie une région de sous-ressource source vers un emplacement sur une sous-ressource de destination.

Syntaxe

PFND3D10DDI_RESOURCECOPYREGION Pfnd3d10ddiResourcecopyregion;

void Pfnd3d10ddiResourcecopyregion(
  D3D10DDI_HDEVICE unnamedParam1,
  D3D10DDI_HRESOURCE unnamedParam2,
  UINT unnamedParam3,
  UINT unnamedParam4,
  UINT unnamedParam5,
  UINT unnamedParam6,
  D3D10DDI_HRESOURCE unnamedParam7,
  UINT unnamedParam8,
  const D3D10_DDI_BOX *unnamedParam9
)
{...}

Paramètres

unnamedParam1

hDevice [in]

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

unnamedParam2

hDstResource [in]

Handle de la ressource de destination vers laquelle effectuer la copie.

unnamedParam3

DstSubresource [in]

Index qui indique la sous-ressource de destination vers laquelle effectuer la copie.

unnamedParam4

DstX [in]

Coordonnée x de la sous-ressource de destination.

unnamedParam5

DstY [in]

Coordonnée y de la sous-ressource de destination. Pour les sous-ressources unidimensionnelles (1D), DstY est défini sur zéro.

unnamedParam6

DstZ [in]

Coordonnée z de la sous-ressource de destination. Pour les sous-ressources unidimensionnelles (1D) et bidimensionnelles (2D), DstZ est défini sur zéro.

unnamedParam7

hSrcResource [in]

Handle de la ressource source à partir de laquelle effectuer la copie.

unnamedParam8

SrcSubresource [in]

Index qui indique la sous-ressource source à partir de laquelle copier.

unnamedParam9

pSrcBox [in, facultatif]

Pointeur vers une structure de D3D10_DDI_BOX qui spécifie une zone qui correspond à la sous-ressource source ou de destination. Si pSrcBox a la valeur NULL, le pilote doit copier l’intégralité de la sous-ressource source dans la destination.

Si les membres de la structure D3D10_DDI_BOX sont tels que left>=right, top>=bottom ou front>=back, pSrcBox est considéré comme vide et ResourceCopyRegion ne doit effectuer aucune opération de copie.

Valeur de retour

None

Remarques

Le pilote peut utiliser la fonction de rappel pfnSetErrorCb pour définir un code d’erreur.

Le runtime Microsoft Direct3D appelle la fonction ResourceCopyRegion du pilote d’affichage en mode utilisateur pour informer le pilote de copier à partir de la région de sous-ressource source spécifiée vers un emplacement sur la sous-ressource de destination spécifiée. Les sous-ressources source et de destination ne peuvent pas être la même sous-ressource de la même ressource. Les ressources source et de destination doivent être du même type de ressource et avoir des types de format (DXGI_FORMAT valeurs de type) qui sont convertibles les uns aux autres.

Pour les mémoires tampons, toutes les coordonnées doivent être en octets ; tandis que pour les textures, toutes les coordonnées doivent être en pixels. La zone vers laquelle pointe le paramètre pSrcBox ne doit pas s’étendre sur les bords de la sous-ressource source ou de la sous-ressource de destination. La source et la ressource de destination ne doivent pas être mappées actuellement. En outre, les indicateurs de création de ressource limitent si la ressource peut participer à l’opération de copie.

Le pilote ne doit rencontrer aucune erreur, à l’exception de D3DDDIERR_DEVICEREMOVED. Par conséquent, si le pilote réussit une erreur, à l’exception de D3DDDIERR_DEVICEREMOVED, dans un appel à la fonction pfnSetErrorCb , le runtime Direct3D détermine que l’erreur est critique. Même si l’appareil a été supprimé, le pilote n’est pas tenu de retourner D3DDDIERR_DEVICEREMOVED ; toutefois, si la suppression de l’appareil a interférer avec le fonctionnement de ResourceCopyRegion (ce qui ne doit généralement pas se produire), le pilote peut retourner D3DDDIERR_DEVICEREMOVED.

Note Les sections suivantes s’appliquent uniquement à Microsoft Direct3D version 10.1 et ultérieure (c’est-à-dire Windows Vista avec Service Pack 1 (SP1) et versions ultérieures, et Windows Server 2008 et versions ultérieures.
 
Le pilote peut implémenter une fonction ResourceCopyRegion qui peut contenir une instruction switch pour traiter la copie et la conversion. Autrement dit, le pilote peut implémenter un ResourceCopyRegion et peut définir le membre pfnResourceConvertRegion de la structure D3D10_1DDI_DEVICEFUNCS pour qu’il pointe vers ResourceCopyRegion avec le membre pfnResourceCopyRegion de D3D10_1DDI_DEVICEFUNCS. Toutefois, pour améliorer les performances, le pilote peut implémenter des fonctions ResourceCopyRegion et ResourceConvertRegion distinctes.

La version Direct3D 10.1 de ResourceCopyRegion présente une différence de fonctionnalité majeure par rapport à la version Direct3D 10.0 en ce qui concerne le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE pour les ressources source et de destination qui ont été créées dans les appels à la fonction CreateResource(D3D10) du pilote. Pour la version Direct3D 10.0 de ResourceCopyRegion, le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE pour les ressources source et de destination doit correspondre. La version Direct3D 10.1 de ResourceCopyRegion permet une légère relaxation pour le membre ResourceDimension de D3D10DDIARG_CREATERESOURCE pour les ressources source et de destination. La version Direct3D 10.1 de ResourceCopyRegion permet de copier des ressources sources Tex2D sur des ressources de destination TexCube ou des ressources sources TexCube sur des ressources de destination Tex2D. En outre, la distinction entre TexCube au niveau des ressources a disparu dans Direct3D version 10.1. La version Direct3D 10.1 de ResourceCopyRegion indique uniquement s’il peut copier un TexCube. Dans Direct3D version 10.0, la copie d’une ressource, la validation d’une cible de rendu multiple, etc. (c’est-à-dire diverses opérations qui exigeaient que le type de ressource soit identique) incluaient toutes la distinction de TexCube à prendre en compte dans le type de ressource. Dans Direct3D version 10.1, le runtime peut déterminer uniquement Tex2D.

Les sections suivantes répertorient les conditions de copie et de conversion :

Copie

Pour la copie, ResourceCopyRegion garantit que les ressources source et de destination ont été créées via la fonction CreateResource(D3D10) du pilote avec les conditions suivantes :

  • La ressource de destination n’a pas été créée avec la valeur D3D10_DDI_USAGE_IMMUTABLE définie dans le membre Usage de la structure D3D10DDIARG_CREATERESOURCE .
  • Si la ressource source ou de destination a le bit D3D10_DDI_BIND_DEPTH_STENCIL défini dans le membre BindFlags de l’D3D10DDIARG_CREATERESOURCE ou s’il s’agit d’une ressource à échantillon multiple, ResourceCopyRegion vérifie que le paramètre pSrcBox est NULL, tandis que les paramètres DstX, DstY et DstZ sont 0.
  • Les index de sous-ressource sont dans la plage.
  • Les restrictions d’alignement s’appliquent aux coordonnées.
  • Les ressources source et de destination ne font pas partie de la même sous-ressource.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D10DDIARG_CREATERESOURCE se trouve dans le même groupe sans type.
  • Les ressources source et de destination doivent avoir le même nombre d’échantillons et les mêmes niveaux de qualité ; sauf pour les ressources à échantillon unique, qui ne doivent avoir que le même nombre d’exemples.
ResourceCopyRegion ne garantit pas que la zone source qui est décalée par les décalages de destination s’adapte entièrement à la ressource. ResourceCopyRegion ne garantit pas non plus qu’aucune sous-ressource n’est actuellement mappée.

Conversion

Pour la conversion, ResourceCopyRegion garantit que les ressources source et de destination ont été créées via la fonction CreateResource(D3D10) du pilote avec les conditions suivantes :

  • La ressource de destination n’a pas été créée avec la valeur D3D10_DDI_USAGE_IMMUTABLE définie dans le membre Usage de la structure D3D10DDIARG_CREATERESOURCE .
  • Si la ressource source ou de destination a le bit D3D10_DDI_BIND_DEPTH_STENCIL défini dans le membre BindFlags de l’D3D10DDIARG_CREATERESOURCE ou s’il s’agit d’une ressource à échantillon multiple, ResourceCopyRegion vérifie que le paramètre pSrcBox est NULL, tandis que les paramètres DstX, DstY et DstZ sont 0.
  • Les index de sous-ressource sont dans la plage.
  • Les restrictions d’alignement s’appliquent aux coordonnées.
  • Les ressources source et de destination ne font pas partie de la même sous-ressource.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D10DDIARG_CREATERESOURCE se trouve dans le même groupe sans type.
  • Chaque format de ressource source et de destination spécifié dans le membre Format de D3D10DDIARG_CREATERESOURCE prend en charge l’opération de conversion appropriée.
  • Les ressources source et de destination doivent avoir le même nombre d’échantillons et les mêmes niveaux de qualité ; sauf pour les ressources à échantillon unique, qui ne doivent avoir que le même nombre d’exemples.
ResourceCopyRegion ne garantit pas qu’aucune sous-ressource n’est actuellement mappée. ResourceCopyRegion ne garantit pas non plus que la zone source qui est décalée par les décalages de destination s’adapte entièrement à la ressource.

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 d3d10umddi.h (include D3d10umddi.h)

Voir aussi

D3D10DDI_DEVICEFUNCS

D3D10_DDI_BOX

pfnSetErrorCb