Partager via


ID3D10Device::CopyResource, méthode (d3d10.h)

Copiez l’intégralité du contenu de la ressource source vers la ressource de destination à l’aide du GPU.

Syntaxe

void CopyResource(
  [in] ID3D10Resource *pDstResource,
  [in] ID3D10Resource *pSrcResource
);

Paramètres

[in] pDstResource

Type : ID3D10Resource*

Pointeur vers la ressource de destination (voir ID3D10Resource).

[in] pSrcResource

Type : ID3D10Resource*

Pointeur vers la ressource source (voir ID3D10Resource).

Valeur de retour

None

Remarques

Cette méthode est inhabituelle en ce qu’elle oblige le GPU à effectuer l’opération de copie (similaire à un memcpy par le processeur). Par conséquent, il a quelques restrictions conçues pour améliorer les performances. Pour instance, les ressources source et de destination :

  • Il doit s’agir de ressources différentes.
  • Doit être du même type.
  • Doit avoir des dimensions identiques (largeur, hauteur, profondeur et taille, selon le cas).
  • Doit avoir des formats compatibles, ce qui signifie que les formats doivent être identiques ou au moins du même groupe de types. Par exemple, une texture DXGI_FORMAT_R32G32B32_FLOAT peut être copiée dans une texture DXGI_FORMAT_R32G32B32_UINT, car ces deux formats se trouvent dans le groupe DXGI_FORMAT_R32G32B32_TYPELESS. À compter de Direct3D 10.1, CopyResource peut copier entre quelques types de format. Pour plus d’informations, consultez Formater la conversion à l’aide de Direct3D 10.1.
  • Peut ne pas être mappé.
CopyResource prend uniquement en charge la copie ; il ne prend pas en charge les conversions d’étirement, de clé de couleur, de fusion ou de format. À compter de Direct3D 10.1, CopyResource peut réinterpréter les données de ressource entre quelques types de format. Pour plus d’informations, consultez Formater la conversion à l’aide de Direct3D 10.1.

Les ressources immuables et de gabarit de profondeur ne peuvent pas être utilisées comme destination. Les ressources créées avec la fonctionnalité d’échantillonnage multiple ne peuvent pas être utilisées comme source ou destination.

La méthode est un appel asynchrone qui peut être ajouté à la file d’attente command-buffer. Cette opération tente de supprimer les blocages de pipeline qui peuvent se produire lors de la copie de données. Pour plus d’informations, consultez Considérations relatives aux performances .

Une application qui doit uniquement copier une partie des données dans une ressource doit utiliser ID3D10Device::CopySubresourceRegion à la place.

Différences entre Direct3D 10 et Direct3D 10.1 :

Direct3D 10.1 permet d’utiliser des ressources de gabarit de profondeur en tant que source ou destination. Direct3D 10.1 permet d’utiliser des ressources multi-échantillonnée comme source et destination uniquement si la source et la destination ont un nombre et une qualité identiques. Si la source et la destination diffèrent par le nombre et la qualité multiéchantillons, ou si l’une d’elles est échantillonnée à plusieurs et que l’autre n’est pas échantillonnée à plusieurs, l’appel à ID3D10Device::CopyResource échoue.

Il est possible de copier entre des ressources préstructurées+typées et des textures compressées par bloc. Consultez Conversion de format à l’aide de Direct3D 10.1.

Configuration requise

   
Plateforme cible Windows
En-tête d3d10.h
Bibliothèque D3D10.lib

Voir aussi

ID3D10Device

ID3D10Resource, interface