D3D11_USAGE enumeração (d3d11.h)
Identifica o uso esperado de recursos durante a renderização. O uso reflete diretamente se um recurso é acessível pela CPU e/ou pela GPU (unidade de processamento gráfico).
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 Um recurso que requer acesso de leitura e gravação pela GPU. É provável que essa seja a opção de uso mais comum. |
D3D11_USAGE_IMMUTABLE Valor: 1 Um recurso que só pode ser lido pela GPU. Ele não pode ser gravado pela GPU e não pode ser acessado pela CPU. Esse tipo de recurso deve ser inicializado quando ele é criado, pois ele não pode ser alterado após a criação. |
D3D11_USAGE_DYNAMIC Valor: 2 Um recurso acessível pela GPU (somente leitura) e pela CPU (somente gravação). Um recurso dinâmico é uma boa opção para um recurso que será atualizado pela CPU pelo menos uma vez por quadro. Para atualizar um recurso dinâmico, use um método Map . Para obter informações sobre como usar recursos dinâmicos, consulte Como usar recursos dinâmicos. |
D3D11_USAGE_STAGING Valor: 3 Um recurso que dá suporte à transferência de dados (cópia) da GPU para a CPU. |
Um aplicativo identifica a maneira como um recurso deve ser usado (seu uso) em uma descrição do recurso. Há várias estruturas para criar recursos, incluindo: D3D11_TEXTURE1D_DESC, D3D11_TEXTURE2D_DESC, D3D11_TEXTURE3D_DESC e D3D11_BUFFER_DESC.
Diferenças entre o Direct3D 9 e o Direct3D 10/11: No Direct3D 9, você especifica o tipo de memória em que um recurso deve ser criado no no momento da criação do recurso (usando D3DPOOL). Era trabalho de um aplicativo decidir qual pool de memória forneceria a melhor combinação de funcionalidade e desempenho. No Direct3D 10/11, um aplicativo não especifica mais em que tipo de memória (o pool) criar um recurso. Em vez disso, especifique o uso pretendido do recurso e permita que o runtime (em conjunto com o driver e um gerenciador de memória) escolha o tipo de memória que obterá o melhor desempenho. |
D3D11_USAGE_DYNAMIC uso é um caso especial que otimiza o fluxo de dados da CPU para a GPU quando a CPU gera esses dados em tempo real e envia esses dados com alta frequência. D3D11_USAGE_DYNAMIC normalmente é usado em recursos com dados de vértice e em buffers constantes. Use os métodos ID3D11DeviceContext::Map e ID3D11DeviceContext::Unmap para gravar dados nesses recursos. Para obter o desempenho mais alto para dados consumidos em série, como dados de vértice, use a sequência de D3D11_MAP_WRITE_NO_OVERWRITE e D3D11_MAP_WRITE_DISCARD . Para obter mais informações sobre essa sequência, consulte Uso comum de D3D11_MAP_WRITE_DISCARD com D3D11_MAP_WRITE_NO_OVERWRITE.
D3D11_USAGE_IMMUTABLE uso é outro caso especial que faz com que a GPU gere dados apenas uma vez quando você cria um recurso. D3D11_USAGE_IMMUTABLE é adequado para dados como texturas porque esses dados normalmente são lidos na memória de algum formato de arquivo. Portanto, quando você cria uma textura com D3D11_USAGE_IMMUTABLE, a GPU lê diretamente essa textura na memória.
Use a tabela a seguir para escolher o uso que melhor descreve como o recurso precisará ser acessado pela CPU e/ou pela GPU. Claro, haverá compensações de desempenho.
Uso de recurso | Default | Dinâmico | Imutável | Staging |
---|---|---|---|---|
GPU-Read | sim | sim | sim | sim¹ |
GPU-Write | sim | sim¹ | ||
CPU-Read | sim¹ | |||
CPU-Write | sim | sim¹ |
1 – A leitura ou gravação de GPU de um recurso com a D3D11_USAGE_STAGING uso é restrita a operações de cópia. Você usa ID3D11DeviceContext::CopySubresourceRegion e ID3D11DeviceContext::CopyResource para essas operações de cópia. Além disso, como formatos de estêncil de profundidade e layouts de várias estênceis são detalhes de implementação de um design de GPU específico, o sistema operacional não pode expor esses formatos e layouts à CPU em geral. Portanto, os recursos de preparo não podem ser um buffer de estêncil de profundidade ou um destino de renderização com várias amostras.
O recurso pode ser associado como | Default | Dinâmico | Imutável | Staging |
---|---|---|---|---|
Entrada para um estágio | yes² | sim,00 | sim | |
Saída de um estágio | yes² |
- 2 - Se associado como uma entrada e uma saída usando exibições diferentes, cada exibição deve usar sub-recursos diferentes.
- 3 – O recurso só pode ser criado com um único sub-recurso. O recurso não pode ser uma matriz de textura. O recurso não pode ser uma cadeia de mipmap.
Requisito | Valor |
---|---|
Cabeçalho | d3d11.h |