ID3D11DeviceContext ::CopyResource, méthode (d3d11.h)
Copiez l’intégralité du contenu de la ressource source vers la ressource de destination à l’aide du GPU.
Syntaxe
void CopyResource(
[in] ID3D11Resource *pDstResource,
[in] ID3D11Resource *pSrcResource
);
Paramètres
[in] pDstResource
Type : ID3D11Resource*
Pointeur vers l’interface ID3D11Resource qui représente la ressource de destination.
[in] pSrcResource
Type : ID3D11Resource*
Pointeur vers l’interface ID3D11Resource qui représente la ressource source.
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 DXGI 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. CopyResource peut copier entre plusieurs types de format. Pour plus d’informations, consultez Formater la conversion à l’aide de Direct3D 10.1.
- Impossible de mapper actuellement.
Vous ne pouvez pas utiliser une ressource immuable comme destination. Vous pouvez utiliser une ressource de gabarit de profondeur comme source ou comme destination, à condition que le niveau de fonctionnalité soit D3D_FEATURE_LEVEL_10_1 ou supérieur. Pour les niveaux de fonctionnalités 9_x, les ressources créées avec l’indicateur D3D11_BIND_DEPTH_STENCIL peuvent uniquement être utilisées comme source pour CopyResource. Les ressources créées avec la fonctionnalité d’échantillonnage multiple (voir DXGI_SAMPLE_DESC) peuvent être utilisées 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 multi-échantillonnée, l’appel à ID3D11DeviceContext ::CopyResource échoue. Utilisez ID3D11DeviceContext ::ResolveSubresource pour résoudre une ressource à échantillonnage multiple en une ressource qui n’est pas échantillonnée à plusieurs échantillons.
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.
Nous vous recommandons d’utiliser ID3D11DeviceContext ::CopySubresourceRegion à la place si vous devez uniquement copier une partie des données d’une ressource.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d11.h |
Bibliothèque | D3D11.lib |