Condividi tramite


Risorse (Direct3D 10)

Una risorsa è un'area in memoria accessibile dalla pipeline Direct3D. Per consentire alla pipeline di accedere in modo efficiente alla memoria, i dati forniti alla pipeline , ad esempio la geometria di input, le risorse dello shader, le trame e così via, devono essere archiviati in una risorsa. Esistono due tipi di risorse da cui derivano tutte le risorse Direct3D: un buffer o una trama. Per ogni fase della pipeline possono essere attive fino a 128 risorse.

Ogni applicazione in genere creerà molte risorse. Esempi di risorsa includono: vertex buffer, buffer di indice, buffer costante, trame e risorse shader. Sono disponibili diverse opzioni che determinano la modalità di utilizzo delle risorse. È possibile creare risorse fortemente tipate o di tipo minore; è possibile controllare se le risorse hanno accesso in lettura e scrittura; è possibile rendere le risorse accessibili solo alla CPU, alla GPU o a entrambi. Naturalmente, ci sarà un compromesso tra velocità e funzionalità: maggiore sarà la funzionalità che si consente a una risorsa di avere, meno prestazioni si dovrebbe prevedere.

Poiché un'applicazione usa spesso molte trame, Direct3D introduce anche il concetto di matrice di trame per semplificare la gestione delle trame. Una matrice di trame contiene una o più trame (tutti gli stessi tipi e dimensioni) che possono essere indicizzate dall'interno di un'applicazione o da shader. Le matrici di trame consentono di usare una singola interfaccia con più indici per accedere a molte trame. È possibile creare tutte le matrici di trame per gestire i diversi tipi di trama necessari.

Dopo aver creato le risorse che verranno usate dall'applicazione, connettersi o associare ogni risorsa alle fasi della pipeline che le useranno. Questa operazione viene eseguita chiamando un'API di associazione, che accetta un puntatore alla risorsa. Poiché più fasi della pipeline potrebbero dover accedere alla stessa risorsa, Direct3D 10 introduce il concetto di visualizzazione delle risorse. Una vista identifica la parte di una risorsa a cui è possibile accedere. È possibile creare visualizzazioni m o una risorsa e associarle a n fasi della pipeline, presupponendo che si seguano le regole di associazione per la risorsa condivisa (il runtime genererà errori in fase di compilazione, se non lo si è).

Una visualizzazione risorse fornisce un modello generale per l'accesso a una risorsa (trame, buffer e così via). Poiché è possibile usare una visualizzazione per indicare al runtime quali dati accedere e come accedervi, le visualizzazioni delle risorse consentono di creare tipi meno risorse. Ciò significa che è possibile creare risorse per una determinata dimensione in fase di compilazione e quindi dichiarare il tipo di dati all'interno della risorsa quando la risorsa viene associata alla pipeline. Le visualizzazioni espongono molte nuove funzionalità per l'uso di risorse, ad esempio la possibilità di leggere le superfici depth/stencil nello shader, di generare mappe cubo dinamiche in un singolo passaggio e di eseguire simultaneamente il rendering in più sezioni di un volume.

Per altre informazioni sui tipi di risorse di base, sulle matrici di trame e su come creare e usare le risorse, vedere questi altri argomenti:

Guida alla programmazione di per direct3D 10