Partager via


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

Copie des données dans 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 WriteToSubresource(
  [in]           ID3D11Resource  *pDstResource,
  [in]           UINT            DstSubresource,
  [in, optional] const D3D11_BOX *pDstBox,
  [in]           const void      *pSrcData,
  [in]           UINT            SrcRowPitch,
  [in]           UINT            SrcDepthPitch
);

Paramètres

[in] pDstResource

Type : ID3D11Resource*

Pointeur vers la ressource de destination ( id3D11Resource).

[in] DstSubresource

Type : UINT

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

[in, optional] pDstBox

Type : const D3D11_BOX*

Pointeur vers une zone qui définit la partie de la sous-ressource de destination dans laquelle copier les données de ressource. Si la valeur est NULL, les données sont écrites dans la sous-ressource de destination sans décalage. Les dimensions de la source 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.

[in] pSrcData

Type : const void*

Pointeur vers les données sources en mémoire.

[in] SrcRowPitch

Type : UINT

Taille d’une ligne des données sources.

[in] SrcDepthPitch

Type : UINT

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

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 l’écriture aux niveaux sub-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