Partager via


ID3D11Device3 ::ReadFromSubresource, méthode (d3d11_3.h)

Copie les données d’une texture D3D11_USAGE_DEFAULT qui a été mappée à l’aide de ID3D11DeviceContext3 ::Map tout en fournissant un paramètre NULL D3D11_MAPPED_SUBRESOURCE .

Syntaxe

void ReadFromSubresource(
  [out]          void            *pDstData,
  [in]           UINT            DstRowPitch,
  [in]           UINT            DstDepthPitch,
  [in]           ID3D11Resource  *pSrcResource,
  [in]           UINT            SrcSubresource,
  [in, optional] const D3D11_BOX *pSrcBox
);

Paramètres

[out] pDstData

Type : void*

Pointeur vers les données de destination en mémoire.

[in] DstRowPitch

Type : UINT

Taille d’une ligne des données de destination.

[in] DstDepthPitch

Type : UINT

Taille d’une tranche de profondeur des données de destination.

[in] pSrcResource

Type : ID3D11Resource*

Pointeur vers la ressource source (voir ID3D11Resource).

[in] SrcSubresource

Type : UINT

Index de base zéro qui identifie la sous-ressource de destination. Pour plus d’informations, consultez D3D11CalcSubresource.

[in, optional] pSrcBox

Type : const D3D11_BOX*

Pointeur vers une zone qui définit la partie de la sous-ressource de destination à partir de laquelle copier les données de ressource. Si la valeur est NULL, les données sont lues à partir de la sous-ressource de destination sans décalage. Les dimensions de la destination doivent correspondre à la destination (voir D3D11_BOX).

Une zone vide génère une opération de non-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 avant est supérieure ou égale à la valeur arrière. Lorsque la zone est vide, cette méthode n’effectue aucune opération.

Valeur de retour

None

Remarques

La ressource fournie doit être une texture D3D11_USAGE_DEFAULT qui a été mappée pour l’écriture par un appel précédent à ID3D11DeviceContext3 ::Map tout en fournissant un paramètre NULL D3D11_MAPPED_SUBRESOURCE .

Cette API est destinée aux appels à haute fréquence. Les appelants peuvent réduire la mémoire en effectuant des appels itératifs qui mettent à jour les régions progressives de la texture, tout en fournissant une petite mémoire tampon pendant chaque appel. Toutefois, il est plus efficace de spécifier des régions suffisamment grandes, car cela permet à D3D de remplir des lignes de cache entières dans la texture avant de retourner.

Pour plus d’efficacité, assurez-vous que les limites et l’alignement des étendues dans la zone sont ( 64 / [Octets par pixel] ) pixels horizontalement. Les limites verticales et l’alignement doivent être de 2 lignes, sauf lorsque des formats de 1 octet par pixel sont utilisés, auquel cas 4 lignes sont recommandées. Les tranches de profondeur uniques par appel sont gérées efficacement. Il est recommandé, mais pas nécessaire, de fournir des pointeurs et des foulées alignés sur 128 octets.

Lors de la lecture à partir de sous-niveaux mipmap, il est recommandé d’utiliser des largeurs et des hauteurs plus grandes que celles décrites ci-dessus. Cela est dû au fait que de petits niveaux de mipmap peuvent en fait être stockés dans un bloc de mémoire plus grand, avec une quantité opaque de compensation qui peut interférer avec l’alignement sur les lignes de cache.

Configuration requise

Condition requise Valeur
Plateforme cible Windows
En-tête d3d11_3.h
Bibliothèque D3D11.lib

Voir aussi

ID3D11Device3