Share via


Effetti (Direct3D 10)

Un effetto DirectX è una raccolta di stato della pipeline, impostata da espressioni scritte in HLSL e una sintassi specifica per il framework degli effetti. Dopo aver compilato un effetto, usare le API del framework degli effetti per il rendering. La funzionalità dell'effetto può variare da un elemento semplice come un vertex shader che trasforma la geometria e un pixel shader che restituisce un colore a tinta unita, a una tecnica di rendering che richiede più passaggi, usa ogni fase della pipeline grafica e modifica lo stato dello shader e lo stato della pipeline non associato agli shader programmabili.

Il primo passaggio consiste nell'organizzare lo stato che si desidera controllare in un effetto. Sono inclusi lo stato dello shader (vertex, geometry e pixel shader), lo stato della trama e del campionatore usato dagli shader e altri stati della pipeline non programmabili. È possibile creare un effetto in memoria come stringa di testo, ma in genere le dimensioni diventano sufficientemente grandi da poter archiviare lo stato dell'effetto in un file di effetto (un file di testo che termina con estensione fx). Per usare un effetto, è necessario compilarlo (per controllare la sintassi HLSL e la sintassi del framework degli effetti), inizializzare lo stato dell'effetto tramite chiamate API e modificare il ciclo di rendering per chiamare le API di rendering.

Un effetto incapsula tutto lo stato di rendering richiesto da un particolare effetto in una singola funzione di rendering denominata tecnica. Un passaggio è un sottoinsieme di una tecnica che contiene lo stato di rendering. Per implementare un effetto di rendering a più passaggi, implementare uno o più passaggi all'interno di una tecnica. Si supponga, ad esempio, di voler eseguire il rendering di una geometria con un set di buffer depth/stencil e quindi disegnare alcuni sprite sopra. È possibile implementare il rendering della geometria nel primo passaggio e il disegno sprite nel secondo passaggio. Per eseguire il rendering dell'effetto, è sufficiente eseguire il rendering di entrambi i passaggi nel ciclo di rendering. È possibile implementare un numero qualsiasi di tecniche in un effetto. Naturalmente, maggiore è il numero di tecniche, maggiore sarà il tempo di compilazione per l'effetto. Un modo per sfruttare questa funzionalità consiste nel creare effetti con tecniche progettate per l'esecuzione su hardware diverso. Ciò consente a un'applicazione di effettuare normalmente il downgrade delle prestazioni in base alle funzionalità hardware rilevate.

Guida alla programmazione per Direct3D 10