Walk-Throughs del codice D3D12
Questa sezione fornisce il codice per gli scenari di esempio. Molte delle procedure dettagliate forniscono informazioni dettagliate su quale codifica deve essere aggiunta a un esempio di base, per evitare di ripetere il codice del componente di base per ogni scenario.
Per il componente più semplice, vedere la sezione Creazione di un componente Direct3D 12 di base . Le procedure dettagliate seguenti descrivono scenari più avanzati.
Contenuto della sezione
Argomento | Descrizione |
---|---|
D2D con D3D11on12 |
L'esempio D3D1211on12 illustra come eseguire il rendering del contenuto D2D su contenuto D3D12 condividendo le risorse tra un dispositivo basato su 11 e un dispositivo basato su 12. |
Simulazione di gravità n corpo multi-motore |
L'esempio D3D12nBodyGravity illustra come eseguire operazioni di calcolo in modo asincrono. L'esempio attiva un numero di thread ognuno con una coda di comandi di calcolo e pianifica il lavoro di calcolo sulla GPU che esegue una simulazione di gravità n corpo. Ogni thread opera su due buffer pieni di dati di posizione e velocità. Con ogni iterazione, lo shader di calcolo legge la posizione e i dati di velocità correnti da un buffer e scrive l'iterazione successiva nell'altro buffer. Al termine dell'iterazione, lo shader di calcolo scambia il buffer che corrisponde al valore SRV per la lettura dei dati di posizione/velocità e che è l'UAV per la scrittura degli aggiornamenti di posizione/velocità modificando lo stato della risorsa in ogni buffer. |
Query di predicazione |
L'esempio D3D12PredicationQueries illustra il culling dell'occlusione usando heap e predicazione di query DirectX 12. La procedura dettagliata descrive il codice aggiuntivo necessario per estendere l'esempio HelloConstBuffer per gestire le query di predicazione. |
Indicizzazione dinamica con HLSL 5.1 |
L'esempio D3D12DynamicIndexing illustra alcune delle nuove funzionalità HLSL disponibili nel modello shader 5.1, in particolare l'indicizzazione dinamica e le matrici non associate, per eseguire il rendering della stessa mesh più volte, ogni volta che viene eseguito il rendering con un materiale selezionato in modo dinamico. Con l'indicizzazione dinamica, gli shader possono ora indicizzare in una matrice senza conoscere il valore dell'indice in fase di compilazione. In combinazione con matrici non associate, questo aggiunge un altro livello di riferimento indiretto e flessibilità per gli autori di shader e le pipeline di arte. |
Disegno indiretto e culling GPU |
L'esempio D3D12ExecuteIndirect illustra come usare i comandi indiretti per disegnare il contenuto. Illustra anche come questi comandi possono essere modificati nella GPU in uno shader di calcolo prima che vengano rilasciati. |