ID3D11DeviceContext ::Map, méthode (d3d11.h)
Obtient un pointeur vers les données contenues dans une sous-ressource et refuse l’accès GPU à cette sous-ressource.
Syntaxe
HRESULT Map(
[in] ID3D11Resource *pResource,
[in] UINT Subresource,
[in] D3D11_MAP MapType,
[in] UINT MapFlags,
[out, optional] D3D11_MAPPED_SUBRESOURCE *pMappedResource
);
Paramètres
[in] pResource
Type : ID3D11Resource*
Pointeur vers une interface ID3D11Resource .
[in] Subresource
Type : UINT
Numéro d’index de la sous-ressource.
[in] MapType
Type : D3D11_MAP
Valeur de type D3D11_MAP qui spécifie les autorisations de lecture et d’écriture du processeur pour une ressource.
[in] MapFlags
Type : UINT
Indicateur qui spécifie ce que fait l’UC lorsque le GPU est occupé. Cet indicateur est facultatif.
[out, optional] pMappedResource
Type : D3D11_MAPPED_SUBRESOURCE*
Pointeur vers la structure D3D11_MAPPED_SUBRESOURCE pour la sous-ressource mappée. Consultez la section Remarques concernant les pointeurs NULL.
Valeur retournée
Type : HRESULT
Cette méthode retourne l’un des codes de retour Direct3D 11.
Cette méthode retourne également DXGI_ERROR_WAS_STILL_DRAWING si MapFlags spécifie D3D11_MAP_FLAG_DO_NOT_WAIT et que le GPU n’est pas encore terminé avec la ressource.
Cette méthode retourne également DXGI_ERROR_DEVICE_REMOVED si MapType autorise l’accès en lecture au processeur et que le carte vidéo a été supprimé.
Pour plus d’informations sur ces codes d’erreur, consultez DXGI_ERROR.
Remarques
Si vous appelez Map sur un contexte différé, vous pouvez uniquement passer D3D11_MAP_WRITE_DISCARD, D3D11_MAP_WRITE_NO_OVERWRITE ou les deux au paramètre MapType . Les autres valeurs de type D3D11_MAP ne sont pas prises en charge pour un contexte différé.
Pointeurs NULL pour pMappedResource
Le paramètre pMappedResource peut avoir la valeur NULL lorsqu’une texture créée avec D3D11_USAGE_DEFAULT est fournie et que l’API est appelée sur un contexte immédiat. Cela permet de mapper une texture par défaut, même si elle a été créée à l’aide de D3D11_TEXTURE_LAYOUT_UNDEFINED. Après cet appel d’API, la texture est accessible à l’aide de ID3D11DeviceContext3 ::WriteToSubresource et/ou ID3D11DeviceContext3 ::ReadFromSubresource.Ne pas lire à partir d’une sous-ressource mappée pour l’écriture
Lorsque vous transmettez D3D11_MAP_WRITE, D3D11_MAP_WRITE_DISCARD ou D3D11_MAP_WRITE_NO_OVERWRITE au paramètre MapType , vous devez vous assurer que votre application ne lit pas les données de sous-ressource vers lesquelles le membre pData de D3D11_MAPPED_SUBRESOURCE pointe, car cela peut entraîner une pénalité importante en matière de performances. Région de mémoire à laquelle les points pData peuvent être alloués avec PAGE_WRITECOMBINE, et votre application doit respecter toutes les restrictions associées à cette mémoire.Même le code C++ suivant peut lire à partir de la mémoire et déclencher une pénalité de performances, car le code peut être étendu au code d’assembly x86 suivant.
Code C++ :
*((int*)MappedResource.pData) = 0;
Code d’assembly x86 :
AND DWORD PTR [EAX],0
Utilisez les paramètres d’optimisation et les constructions linguistiques appropriés pour éviter cette pénalité de performances. Par exemple, vous pouvez éviter l’optimisation xor à l’aide d’un pointeur volatile ou en optimisant la vitesse du code au lieu de la taille du code.
Windows Phone 8 : Cette API est prise en charge.
Configuration requise
Condition requise | Valeur |
---|---|
Plateforme cible | Windows |
En-tête | d3d11.h |
Bibliothèque | D3D11.lib |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour