Share via


Considerazioni sulle prestazioni (Direct3D 10)

Uso dei pool di effetti

È comune che le pipeline di rendering usino molti shader per eseguire il rendering di diversi tipi di oggetti e effetti speciali. Lo shader è una combinazione di stati comuni tra tutti gli shader, ad esempio una matrice mondiale o una posizione di luce, e un altro stato specifico per ogni shader, ad esempio il colore diffuso di un oggetto o il calcolo dell'evidenziazione speculare. Un pool di effetti è un luogo in memoria per archiviare lo stato usato in molti shader, nonché oggetti di dispositivo comuni, ad esempio shader, eseguire il rendering di oggetti di stato e buffer costanti. Il miglioramento delle prestazioni risulta dall'aggiornamento dello stato comune una volta per tutti gli shader che necessitano di tale stato.

Un pool di effetti è una posizione di memoria condivisa per lo stato dell'effetto. Un pool viene creato in modo analogo a un effetto; può essere creato dalla memoria (o da un file o da una risorsa). Ciò comporta due diversi tipi di effetti: un effetto globale che non dipende dallo stato in altri effetti rispetto a un effetto figlio che dipende dallo stato in un altro effetto.

Si specifica se un effetto è un effetto globale (caso predefinito) o un effetto figlio (specificando il flag di D3D10_EFFECT_COMPILE_CHILD_EFFECT ) quando viene creato l'effetto. Un effetto globale può fungere da pool di effetti; un effetto figlio non può essere un pool di effetti.

Rendering di un effetto

Effetti (Direct3D 10)