enumeración D3D11_USAGE (d3d11.h)
Identifica el uso esperado de recursos durante la representación. El uso refleja directamente si la CPU o la unidad de procesamiento de gráficos (GPU) pueden acceder a un recurso.
typedef enum D3D11_USAGE {
D3D11_USAGE_DEFAULT = 0,
D3D11_USAGE_IMMUTABLE = 1,
D3D11_USAGE_DYNAMIC = 2,
D3D11_USAGE_STAGING = 3
} ;
D3D11_USAGE_DEFAULT Valor: 0 Recurso que requiere acceso de lectura y escritura mediante la GPU. Es probable que sea la opción de uso más común. |
D3D11_USAGE_IMMUTABLE Valor: 1 Recurso que solo puede leer la GPU. No se puede escribir mediante la GPU y no se puede acceder a él en absoluto mediante la CPU. Este tipo de recurso se debe inicializar cuando se crea, ya que no se puede cambiar después de la creación. |
D3D11_USAGE_DYNAMIC Valor: 2 Un recurso al que puede acceder tanto la GPU (solo lectura) como la CPU (solo escritura). Un recurso dinámico es una buena opción para un recurso que la CPU actualizará al menos una vez por fotograma. Para actualizar un recurso dinámico, use un método Map . Para obtener información sobre cómo usar recursos dinámicos, consulte Cómo: Usar recursos dinámicos. |
D3D11_USAGE_STAGING Valor: 3 Recurso que admite la transferencia de datos (copia) desde la GPU a la CPU. |
Una aplicación identifica la forma en que se va a usar un recurso (su uso) en una descripción de recursos. Hay varias estructuras para crear recursos, como: D3D11_TEXTURE1D_DESC, D3D11_TEXTURE2D_DESC, D3D11_TEXTURE3D_DESC y D3D11_BUFFER_DESC.
Diferencias entre Direct3D 9 y Direct3D 10/11: En Direct3D 9, especifique el tipo de memoria en la que se debe crear un recurso en el momento de la creación de recursos (mediante D3DPOOL). Fue el trabajo de una aplicación decidir qué grupo de memoria proporcionaría la mejor combinación de funcionalidad y rendimiento. En Direct3D 10/11, una aplicación ya no especifica en qué tipo de memoria (el grupo) se va a crear un recurso. En su lugar, especifique el uso previsto del recurso y deje que el tiempo de ejecución (en conjunto con el controlador y un administrador de memoria) elija el tipo de memoria que logrará el mejor rendimiento. |
D3D11_USAGE_DYNAMIC uso es un caso especial que optimiza el flujo de datos de CPU a GPU cuando la CPU genera esos datos sobre la marcha y envía esos datos con alta frecuencia. D3D11_USAGE_DYNAMIC se usa normalmente en recursos con datos de vértice y en búferes de constantes. Use los métodos ID3D11DeviceContext::Map e ID3D11DeviceContext::Unmap para escribir datos en estos recursos. Para lograr el máximo rendimiento de los datos consumidos en serie, como los datos de vértices, use la secuencia de D3D11_MAP_WRITE_NO_OVERWRITE y D3D11_MAP_WRITE_DISCARD . Para obtener más información sobre esta secuencia, consulte Uso común de D3D11_MAP_WRITE_DISCARD con D3D11_MAP_WRITE_NO_OVERWRITE.
D3D11_USAGE_IMMUTABLE uso es otro caso especial que hace que la GPU genere datos una sola vez al crear un recurso. D3D11_USAGE_IMMUTABLE es adecuado para datos como texturas, ya que normalmente estos datos se leen en la memoria desde algún formato de archivo. Por lo tanto, al crear una textura con D3D11_USAGE_IMMUTABLE, la GPU lee directamente esa textura en la memoria.
Use la tabla siguiente para elegir el uso que mejor describe cómo tendrá acceso el recurso a la CPU o la GPU. Por supuesto, habrá inconvenientes en el rendimiento.
Resource Usage | Default | Dinámica | Inmutable | Ensayo |
---|---|---|---|---|
GPU-Read | sí | sí | sí | Sí¹ |
GPU-Write | sí | Sí¹ | ||
CPU-Read | Sí¹ | |||
CPU-Write | sí | Sí¹ |
1: la lectura o escritura de GPU de un recurso con el uso de D3D11_USAGE_STAGING está restringida a las operaciones de copia. Use ID3D11DeviceContext::CopySubresourceRegion e ID3D11DeviceContext::CopyResource para estas operaciones de copia. Además, dado que los formatos de galería de símbolos de profundidad y los diseños de varias muestras son detalles de implementación de un diseño de GPU determinado, el sistema operativo no puede exponer estos formatos y diseños a la CPU en general. Por lo tanto, los recursos de almacenamiento provisional no pueden ser un búfer de galería de símbolos de profundidad ni un destino de representación de muestreo múltiple.
El recurso se puede enlazar como | Default | Dinámica | Inmutable | Ensayo |
---|---|---|---|---|
Entrada en una fase | Sí² | Sí³ | sí | |
Salida de una fase | Sí² |
- 2 - Si se enlaza como entrada y salida mediante vistas diferentes, cada vista debe usar subrecursos diferentes.
- 3 : el recurso solo se puede crear con un único subrecurso. El recurso no puede ser una matriz de texturas. El recurso no puede ser una cadena de mapas mip.
Requisito | Valor |
---|---|
Header | d3d11.h |