Risorse (Direct3D 10)

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

Ogni applicazione creerà in genere molte risorse. Esempi di risorsa includono: buffer di vertice, buffer di indice, buffer costante, trame e risorse shader. Esistono diverse opzioni che determinano la modalità di utilizzo delle risorse. È possibile creare risorse fortemente tipizzata o tipizzata; è possibile controllare se le risorse dispongono sia di accesso in lettura che in scrittura; è possibile rendere accessibili le risorse solo alla CPU, alla GPU o a entrambi. Naturalmente, ci sarà una velocità e un compromesso della funzionalità: la maggiore funzionalità che consente a una risorsa di avere, le prestazioni meno previste.

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

Dopo aver creato le risorse usate dall'applicazione, connettersi o associare ogni risorsa alle fasi della pipeline che li 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 di seguire le regole di associazione per la risorsa condivisa (il runtime genererà errori in fase di compilazione se non si esegue).

Una visualizzazione risorsa 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 meno risorse di tipo. Vale a dire, è 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 di profondità/stencil nello shader, generando mappe dinamiche dei cubi in un singolo passaggio e eseguendo il rendering simultaneamente in più sezioni di un volume.

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

Guida alla programmazione per Direct3D 10