Condividi tramite


Rendering di un effetto (Direct3D 11)

Un effetto può essere usato per archiviare le informazioni o per eseguire il rendering usando un gruppo di stato. Ogni tecnica specifica un set di vertex shader, hull shader, domain shader, geometry shader, pixel shader, compute shader, stato shader, campionatore e stato trama, stato di visualizzazione di accesso non ordinato e altro stato della pipeline. Quindi, dopo aver organizzato lo stato in un effetto, è possibile incapsulare l'effetto di rendering risultante da tale stato creando e eseguendo il rendering dell'effetto.

Esistono alcuni passaggi per preparare un effetto per il rendering. La prima è la compilazione, che controlla HLSL come codice rispetto alla sintassi del linguaggio HLSL e alle regole del framework degli effetti. È possibile compilare un effetto dall'applicazione usando chiamate API oppure è possibile compilare un effetto offline usando l'utilità del compilatore dell'effetto fxc.exe. Dopo aver compilato correttamente l'effetto, crearlo chiamando un set di API diverso (ma molto simile).

Dopo aver creato l'effetto, sono necessari due passaggi rimanenti per usarlo. In primo luogo, è necessario inizializzare i valori dello stato dell'effetto (i valori delle variabili dell'effetto) usando diversi metodi per impostare lo stato se non vengono inizializzati in HLSL. Per alcune variabili questa operazione può essere eseguita una sola volta quando viene creato un effetto; altri devono essere aggiornati ogni volta che l'applicazione chiama il ciclo di rendering. Dopo aver impostato le variabili dell'effetto, indicare al runtime di eseguire il rendering dell'effetto applicando una tecnica. Questi argomenti sono descritti in dettaglio più avanti.

Naturalmente, esistono considerazioni sulle prestazioni per l'uso degli effetti. Queste considerazioni sono in gran parte le stesse se non si usa un effetto. Elementi come ridurre al minimo la quantità di modifiche dello stato e organizzare le variabili in base alla frequenza di aggiornamento. Queste tattiche vengono usate per ridurre al minimo la quantità di dati che devono essere inviati dalla CPU alla GPU e quindi ridurre al minimo i potenziali problemi di sincronizzazione.

Contenuto della sezione

Argomento Descrizione
Compilare un effetto
Dopo aver creato un effetto, il passaggio successivo consiste nel compilare il codice per verificare la presenza di problemi di sintassi.
Creare un effetto
Un effetto viene creato caricando il bytecode dell'effetto compilato nel framework degli effetti. A differenza di Effects 10, l'effetto deve essere compilato prima di creare l'effetto. Gli effetti caricati nella memoria possono essere creati chiamando D3DX11CreateEffectFromMemory.
Imposta stato effetto
Alcune costanti di effetto devono essere inizializzate solo. Dopo l'inizializzazione, lo stato dell'effetto viene impostato sul dispositivo per l'intero ciclo di rendering. È necessario aggiornare altre variabili ogni volta che viene chiamato il ciclo di rendering. Il codice di base per l'impostazione delle variabili di effetto è illustrato di seguito, per ognuno dei tipi di variabili.
Applicare una tecnica
Con le costanti, le trame e lo stato dello shader dichiarati e inizializzati, l'unica cosa da fare è impostare lo stato dell'effetto nel dispositivo.

Effetti (Direct3D 11)