ID3D10Device ::CopySubresourceRegion, méthode (d3d10.h)
Copiez une région d’une ressource source vers une ressource de destination.
Syntaxe
void CopySubresourceRegion(
[in] ID3D10Resource *pDstResource,
[in] UINT DstSubresource,
[in] UINT DstX,
[in] UINT DstY,
[in] UINT DstZ,
[in] ID3D10Resource *pSrcResource,
[in] UINT SrcSubresource,
[in] const D3D10_BOX *pSrcBox
);
Paramètres
[in] pDstResource
Type : ID3D10Resource*
Pointeur vers la ressource de destination (voir ID3D10Resource).
[in] DstSubresource
Type : UINT
Index de sous-ressource de la destination.
[in] DstX
Type : UINT
Coordonnée x du coin supérieur gauche de la région de destination.
[in] DstY
Type : UINT
Coordonnée y du coin supérieur gauche de la région de destination.
[in] DstZ
Type : UINT
Coordonnée z du coin supérieur gauche de la région de destination. Pour une sous-ressource 1D ou 2D, cette valeur doit être égale à zéro.
[in] pSrcResource
Type : ID3D10Resource*
Pointeur vers la ressource source (voir ID3D10Resource).
[in] SrcSubresource
Type : UINT
Index de sous-ressource de la source.
[in] pSrcBox
Type : const D3D10_BOX*
Zone 3D (voir D3D10_BOX) qui définit la sous-ressource source qui peut être copiée. Si la valeur est NULL, la sous-ressource source entière est copiée. La zone doit correspondre à la ressource source.
Une zone vide entraîne une absence d’opération. Une zone est vide si la valeur supérieure est supérieure ou égale à la valeur inférieure, ou si la valeur de gauche est supérieure ou égale à la valeur de droite, ou si la valeur de début est supérieure ou égale à la valeur d’arrière-plan. Lorsque la zone est vide, CopySubresourceRegion n’effectue pas d’opération de copie.
Valeur de retour
None
Remarques
La zone source doit être dans la taille de la ressource source. L’emplacement de destination est une valeur absolue (et non une valeur relative). L’emplacement de destination peut être décalé de l’emplacement source ; Toutefois, la taille de la région à copier (y compris l’emplacement de destination) doit correspondre à la ressource de destination.
Si les ressources sont des mémoires tampons, toutes les coordonnées sont exprimées en octets ; si les ressources sont des textures, toutes les coordonnées sont en texels.
D3D10CalcSubresource est une fonction d’assistance pour le calcul des index de sous-ressources.
CopySubresourceRegion effectue la copie sur le GPU (similaire à un memcpy par le processeur). Par conséquent, les ressources source et de destination doivent répondre aux critères suivants :
- Doivent être des sous-ressources différentes (bien qu’elles puissent provenir de la même ressource).
- Doit être du même type.
- Doit avoir des formats compatibles (les formats doivent être identiques ou être 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, CopySubresourceRegion 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é.
Si votre application doit copier une ressource entière, nous vous recommandons d’utiliser ID3D10Device ::CopyResource à la place.
CopySubresourceRegion est un appel asynchrone que le runtime peut ajouter à la file d’attente command-buffer. Ce comportement asynchrone 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 .
Différences entre Direct3D 10 et Direct3D 10.1 : Direct3D 10 présente les limitations suivantes :
|
Exemple
L’extrait de code suivant copie une zone (située à (120 100),(200 220)) d’une texture source dans une région (130 120),(210 240) dans une texture de destination.
D3D10_BOX sourceRegion;
sourceRegion.left = 120;
sourceRegion.right = 200;
sourceRegion.top = 100;
sourceRegion.bottom = 220;
sourceRegion.front = 0;
sourceRegion.back = 1;
pd3dDevice->CopySubresourceRegion( pDestTexture, 0, 130, 120, 0, pSourceTexture, 0, &sourceRegion );
Notez que, pour une texture 2D, l’avant et l’arrière sont toujours définis sur 0 et 1 respectivement.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d10.h |
Bibliothèque | D3D10.lib |