D3D10_USAGE enumeração (d3d10.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.
Syntax
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
Constantes
D3D10_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. |
D3D10_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. |
D3D10_USAGE_DYNAMIC Valor: 2 Um recurso acessível pela GPU 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 gravar em um recurso dinâmico na CPU, use um método Map . Você pode gravar em um recurso dinâmico na GPU usando CopyResource ou CopySubresourceRegion. |
D3D10_USAGE_STAGING Valor: 3 Um recurso que dá suporte à transferência de dados (cópia) da GPU para a CPU. |
Comentários
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: D3D10_TEXTURE1D_DESC, D3D10_TEXTURE2D_DESC, D3D10_TEXTURE3D_DESC, D3D10_BUFFER_DESC e D3DX10_IMAGE_LOAD_INFO.
Diferenças entre o Direct3D 9 e o Direct3D 10: No Direct3D 9, você especifica o tipo de memória em que um recurso deve ser criado 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, um aplicativo não especifica mais em que tipo de memória (o pool) criar um recurso. Em vez disso, você especifica o uso pretendido do recurso e permite que o runtime (em conjunto com o driver e um gerenciador de memória) escolha o tipo de memória que alcançará o melhor desempenho. |
Restrições de uso de recursos
Cada uso determina uma compensação entre a funcionalidade e o desempenho. Em geral, o acesso a recursos é realizado com as APIs a seguir.- O acesso à CPU é feito com ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map ou ID3D10Texture3D::Map
- O acesso à GPU é feito com CopySubresourceRegion, CopyResource ou UpdateSubresource.
Uso de recurso | Default | Dinâmico | Imutável | Staging |
---|---|---|---|---|
GPU-Read | sim | sim¹ | sim | Sim, 1, 2 |
GPU-Write | sim¹ | Sim, 1, 2 | ||
CPU-Read | Sim, 1, 2 | |||
CPU-Write | sim | Sim, 1, 2 |
- 1 – Isso é restrito a CopySubresourceRegion, CopyResource e UpdateSubresource.
- 2 – Não é possível ser um buffer de estêncil de profundidade ou um destino de renderização com várias amostras.
Opções de Associação de Recursos
Para maximizar o desempenho, nem todas as opções de uso de recursos podem ser usadas como recursos de entrada ou saída para o pipeline. Esta tabela identifica essas limitações.O recurso pode ser associado como | Default | Dinâmico | Imutável | Staging |
---|---|---|---|---|
Entrada para um estágio | yes³ | sim⁴ | sim | |
Saída de um estágio | yes³ |
- 3 - Se associado como uma entrada e uma saída usando exibições diferentes, cada exibição deve usar sub-recursos diferentes.
- 4 – 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.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | d3d10.h |