énumération D3D10_MAP (d3d10.h)
Identifie une ressource accessible pour la lecture et l’écriture par le processeur. Les applications peuvent combiner un ou plusieurs de ces indicateurs.
Syntax
typedef enum D3D10_MAP {
D3D10_MAP_READ = 1,
D3D10_MAP_WRITE = 2,
D3D10_MAP_READ_WRITE = 3,
D3D10_MAP_WRITE_DISCARD = 4,
D3D10_MAP_WRITE_NO_OVERWRITE = 5
} ;
Constantes
D3D10_MAP_READ Valeur : 1 La ressource est mappée pour la lecture. La ressource doit avoir été créée avec un accès en lecture (voir D3D10_CPU_ACCESS_READ). |
D3D10_MAP_WRITE Valeur : 2 La ressource est mappée pour l’écriture. La ressource doit avoir été créée avec un accès en écriture (voir D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_READ_WRITE Valeur : 3 La ressource est mappée pour la lecture et l’écriture. La ressource doit avoir été créée avec un accès en lecture et en écriture (voir D3D10_CPU_ACCESS_READ et D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_WRITE_DISCARD Valeur : 4 La ressource est mappée pour l’écriture ; le contenu précédent de la ressource n’est pas défini. La ressource doit avoir été créée avec un accès en écriture (voir D3D10_CPU_ACCESS_WRITE). |
D3D10_MAP_WRITE_NO_OVERWRITE Valeur : 5 La ressource est mappée pour l’écriture ; le contenu existant de la ressource ne peut pas être remplacé (voir remarques). Cet indicateur est valide uniquement sur les tampons de vertex et d’index. La ressource doit avoir été créée avec un accès en écriture (voir D3D10_CPU_ACCESS_WRITE). Ne peut pas être utilisé sur une ressource créée avec l’indicateur D3D10_BIND_CONSTANT_BUFFER . |
Remarques
Cette énumération est utilisée dans ID3D10Buffer ::Map, ID3D10Texture1D ::Map, ID3D10Texture2D ::Map et ID3D10Texture3D ::Map.
Signification de D3D10_MAP_WRITE_NO_OVERWRITE
D3D10_MAP_WRITE_NO_OVERWRITE signifie que l’application promet de ne pas écrire dans les données que la phase d’assembleur d’entrée (IA) utilise. En échange, le GPU permet à l’application d’écrire dans d’autres parties de la même mémoire tampon. L’application doit s’assurer qu’elle n’écrit pas sur les données utilisées par la phase IA.Par exemple, considérez la mémoire tampon illustrée dans le diagramme suivant. Si un appel Draw qui utilise les sommets 4 à 6 a été émis, une application qui appelle Map sur cette mémoire tampon doit s’assurer qu’elle n’écrit pas dans les sommets auxquels l’appel Draw accède pendant le rendu.
Toutefois, il peut être difficile de s’assurer que cela peut être difficile, car le GPU est souvent de nombreuses trames derrière le processeur en termes de l’image qu’il traite actuellement. Le suivi des sections d’une ressource qui sont utilisées en raison d’appels effectués il y a 2 à 5 images est difficile et sujet aux erreurs. Pour cette raison, il est recommandé que les applications écrivent uniquement dans les parties non initialisées d’une ressource lors de l’utilisation de D3D10_MAP_WRITE_NO_OVERWRITE.Utilisation courante de D3D10_MAP_WRITE_DISCARD avec D3D10_MAP_WRITE_NO_OVERWRITE
D3D10_MAP_WRITE_DISCARD et D3D10_MAP_WRITE_NO_OVERWRITE sont normalement utilisés conjointement avec des mémoires tampons d’index/vertex dynamiques, bien qu’ils puissent également être utilisés avec des textures dynamiques.Une utilisation courante de ces deux indicateurs implique de remplir les mémoires tampons d’index/vertex dynamiques avec une géométrie visible à partir de la position actuelle de la caméra. La première fois que les données sont entrées dans la mémoire tampon sur une trame donnée, Map est appelée avec D3D10_MAP_WRITE_DISCARD ; Cela invalide le contenu précédent de la mémoire tampon. La mémoire tampon est ensuite remplie avec toutes les données disponibles.
Les écritures suivantes dans la mémoire tampon dans la même trame doivent utiliser D3D10_MAP_WRITE_NO_OVERWRITE. Cela permet au processeur d’accéder à une ressource potentiellement utilisée par le GPU tant que les restrictions décrites précédemment sont respectées.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | d3d10.h |