enumeración D3D11_MAP (d3d11.h)

Identifica un recurso al que se va a acceder para leer y escribir mediante la CPU. Las aplicaciones pueden combinar una o varias de estas marcas.

Syntax

typedef enum D3D11_MAP {
  D3D11_MAP_READ = 1,
  D3D11_MAP_WRITE = 2,
  D3D11_MAP_READ_WRITE = 3,
  D3D11_MAP_WRITE_DISCARD = 4,
  D3D11_MAP_WRITE_NO_OVERWRITE = 5
} ;

Constantes

 
D3D11_MAP_READ
Valor: 1
El recurso se asigna para la lectura. El recurso debe haberse creado con acceso de lectura.
(consulte D3D11_CPU_ACCESS_READ).
D3D11_MAP_WRITE
Valor: 2
El recurso se asigna para escribir. El recurso debe haberse creado con escritura.
access (consulte D3D11_CPU_ACCESS_WRITE).
D3D11_MAP_READ_WRITE
Valor: 3
El recurso se asigna para leer y escribir. El recurso debe haberse creado con lectura y escritura.
access (consulte D3D11_CPU_ACCESS_READ y D3D11_CPU_ACCESS_WRITE).
D3D11_MAP_WRITE_DISCARD
Valor: 4
El recurso se asigna para escribir; El contenido anterior del recurso no estará definido. El recurso debe haberse creado con acceso de escritura.
y el uso dinámico (consulte D3D11_CPU_ACCESS_WRITE y D3D11_USAGE_DYNAMIC).
D3D11_MAP_WRITE_NO_OVERWRITE
Valor: 5
El recurso se asigna para escribir; No se puede sobrescribir el contenido existente del recurso (vea Comentarios). Esta marca solo es válida en el vértice y
búferes de índice. El recurso debe haberse creado con acceso de escritura (consulte D3D11_CPU_ACCESS_WRITE).
No se puede usar en un recurso creado con la marca D3D11_BIND_CONSTANT_BUFFER .

Nota El entorno de ejecución de Direct3D 11.1, que está disponible a partir de Windows 8, permite asignar búferes de constantes dinámicas y vistas de recursos de sombreador (SRV) de búferes dinámicos con D3D11_MAP_WRITE_NO_OVERWRITE. Los tiempos de ejecución de Direct3D 11 y anteriores limitan la asignación a los búferes de vértices o índices. Para determinar si un dispositivo Direct3D admite estas características, llame a ID3D11Device::CheckFeatureSupport con D3D11_FEATURE_D3D11_OPTIONS. CheckFeatureSupport rellena los miembros de una estructura de D3D11_FEATURE_DATA_D3D11_OPTIONS con las características del dispositivo. Los miembros pertinentes aquí son MapNoOverwriteOnDynamicConstantBuffer y MapNoOverwriteOnDynamicBufferSRV.

 

Comentarios

Esta enumeración se usa en ID3D11DeviceContext::Map.

Significado de D3D11_MAP_WRITE_NO_OVERWRITE

D3D11_MAP_WRITE_NO_OVERWRITE significa que la aplicación promete no escribir en los datos que usa la fase del ensamblador de entrada (IA). A cambio, la GPU permite que la aplicación escriba en otras partes del mismo búfer. La aplicación debe asegurarse de que no escribe datos en uso por la fase de IA.

Por ejemplo, considere el búfer que se muestra en el diagrama siguiente. Si se ha emitido una llamada a Draw que usa vértices 4-6, una aplicación que llama a Map en este búfer debe asegurarse de que no escribe en los vértices a los que accederá la llamada a Draw durante la representación.

Diagrama de un búfer que incluye vértices en diferentes fases de uso Sin embargo, garantizar esto puede ser difícil, ya que la GPU suele tener muchos fotogramas detrás de la CPU en términos de qué fotograma está procesando actualmente. Realizar un seguimiento de las secciones de un recurso que se usan debido a las llamadas realizadas hace entre 2 y 5 fotogramas es difícil y propensa a errores. Por este motivo, se recomienda que las aplicaciones solo escriban en las partes no inicializadas de un recurso al usar D3D11_MAP_WRITE_NO_OVERWRITE.

Uso común de D3D11_MAP_WRITE_DISCARD con D3D11_MAP_WRITE_NO_OVERWRITE

D3D11_MAP_WRITE_DISCARD y D3D11_MAP_WRITE_NO_OVERWRITE se usan normalmente junto con búferes dinámicos de índice o vértice. D3D11_MAP_WRITE_DISCARD también se puede usar con texturas dinámicas. Sin embargo, D3D11_MAP_WRITE_NO_OVERWRITE no se puede usar con texturas dinámicas.

Un uso común de estas dos marcas implica rellenar búferes dinámicos de índice o vértice con geometría que se puede ver desde la posición actual de la cámara. La primera vez que los datos se introducen en el búfer en un marco determinado, se llama a Map con D3D11_MAP_WRITE_DISCARD; si lo hace, invalida el contenido anterior del búfer. A continuación, el búfer se rellena con todos los datos disponibles.

Las escrituras posteriores en el búfer dentro del mismo marco deben usar D3D11_MAP_WRITE_NO_OVERWRITE. Esto permitirá que la CPU acceda a un recurso que podría usar la GPU, siempre y cuando se respeten las restricciones descritas anteriormente.

Requisitos

Requisito Valor
Header d3d11.h

Consulte también

Enumeraciones de recursos