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 |