enumerazione D3D10_USAGE (d3d10.h)
Identifica l'uso previsto delle risorse durante il rendering. L'utilizzo riflette direttamente se una risorsa è accessibile dalla CPU e/o dalla GPU.
Sintassi
typedef enum D3D10_USAGE {
D3D10_USAGE_DEFAULT = 0,
D3D10_USAGE_IMMUTABLE = 1,
D3D10_USAGE_DYNAMIC = 2,
D3D10_USAGE_STAGING = 3
} ;
Costanti
D3D10_USAGE_DEFAULT Valore: 0 Risorsa che richiede l'accesso in lettura e scrittura dalla GPU. Questa è probabilmente la scelta di utilizzo più comune. |
D3D10_USAGE_IMMUTABLE Valore: 1 Risorsa che può essere letta solo dalla GPU. Non può essere scritto dalla GPU e non può essere accessibile affatto dalla CPU. Questo tipo di risorsa deve essere inizializzato al momento della creazione, perché non può essere modificato dopo la creazione. |
D3D10_USAGE_DYNAMIC Valore: 2 Risorsa accessibile sia dalla GPU che dalla CPU (solo scrittura). Una risorsa dinamica è una scelta ottimale per una risorsa che verrà aggiornata dalla CPU almeno una volta per fotogramma. Per scrivere in una risorsa dinamica nella CPU, usare un metodo Map . È possibile scrivere in una risorsa dinamica nella GPU usando CopyResource o CopySubresourceRegion. |
D3D10_USAGE_STAGING Valore: 3 Risorsa che supporta il trasferimento dei dati (copia) dalla GPU alla CPU. |
Commenti
Un'applicazione identifica il modo in cui una risorsa deve essere usata (il relativo utilizzo) in una descrizione della risorsa. Esistono diverse strutture per la creazione di risorse, tra cui : D3D10_TEXTURE1D_DESC, D3D10_TEXTURE2D_DESC, D3D10_TEXTURE3D_DESC, D3D10_BUFFER_DESC e D3DX10_IMAGE_LOAD_INFO.
Differenze tra Direct3D 9 e Direct3D 10: In Direct3D 9 specificare il tipo di memoria in cui deve essere creata una risorsa al momento della creazione delle risorse (usando D3DPOOL). È stato compito di un'applicazione decidere quale pool di memoria fornirebbe la migliore combinazione di funzionalità e prestazioni. In Direct3D 10 un'applicazione non specifica più il tipo di memoria (il pool) in cui creare una risorsa. Specificare invece l'utilizzo previsto della risorsa e lasciare che il runtime (insieme al driver e a un gestore di memoria) scelga il tipo di memoria che otterrà le migliori prestazioni. |
Restrizioni relative all'utilizzo delle risorse
Ogni utilizzo determina un compromesso tra funzionalità e prestazioni. In generale, l'accesso alle risorse viene eseguito con le API seguenti.- L'accesso alla CPU viene eseguito con ID3D10Buffer::Map, ID3D10Texture1D::Map, ID3D10Texture2D::Map o ID3D10Texture3D::Map
- L'accesso gpu viene eseguito con CopySubresourceRegion, CopyResource o UpdateSubresource.
Resource Usage | Default | Dynamic | Non modificabile | Gestione temporanea |
---|---|---|---|---|
GPU-Read | Sì | Sì¹ | sì | Sì1, 2 |
GPU-Write | Sì¹ | Sì1, 2 | ||
CPU-Read | Sì1, 2 | |||
CPU-Write | sì | Sì1, 2 |
- 1 - Limitato a CopySubresourceRegion, CopyResource e UpdateSubresource.
- 2 - Non può essere un buffer depth-stencil o una destinazione di rendering multicampionato.
Opzioni di associazione risorse
Per ottimizzare le prestazioni, non tutte le opzioni di utilizzo delle risorse possono essere usate come risorse di input o output nella pipeline. Questa tabella identifica queste limitazioni.La risorsa può essere associata come | Default | Dynamic | Non modificabile | Gestione temporanea |
---|---|---|---|---|
Input in una fase | Sì". | Sì⁴ | Sì | |
Output da una fase | Sì". |
- 3 - Se associato come input e output usando visualizzazioni diverse, ogni visualizzazione deve usare sottorisorse diverse.
- 4 - La risorsa può essere creata solo con una singola sottorisorsa. La risorsa non può essere una matrice di trame. La risorsa non può essere una catena mipmap.
Requisiti
Requisito | Valore |
---|---|
Intestazione | d3d10.h |