Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
In Direct3D 10 lo stato del dispositivo viene raggruppato in oggetti di stato che riducono notevolmente il costo delle modifiche dello stato. Sono disponibili diversi oggetti di stato e ognuno di essi è progettato per inizializzare un set di stato per una determinata fase della pipeline. È possibile creare fino a 4096 di ogni tipo di oggetto stato.
- Input-Layout stato
- stato rasterizzatore
- Depth-Stencil stato
- dello stato blend
- stato sampler
- considerazioni sulle prestazioni
- argomenti correlati
stato Input-Layout
Questo gruppo di stato (vedere D3D10_INPUT_ELEMENT_DESC) determina come la fase assembler di input legge i dati dai buffer di input e lo assembla per l'uso da parte del vertex shader. Sono inclusi lo stato, ad esempio il numero di elementi nel buffer di input e la firma dei dati di input. La fase input-assembler è una nuova fase della pipeline il cui processo consiste nel trasmettere primitive dalla memoria alla pipeline.
Per creare un oggetto input-layout-state, vedere CreateInputLayout.
Stato rasterizzatore
Questo gruppo di stato (vedere D3D10_RASTERIZER_DESC) inizializza la fase di rasterizzazione . Questo oggetto include lo stato, ad esempio le modalità riempimento o null, l'abilitazione di un rettangolo scissor per il ritaglio e l'impostazione di parametri multisample. Questa fase rasterizza le primitive in pixel, eseguendo operazioni come ritaglio e mapping di primitive al viewport.
Per creare un oggetto di stato rasterizzatore, vedere CreateRasterizerState.
stato Depth-Stencil
Questo gruppo di stato (vedere D3D10_DEPTH_STENCIL_DESC) inizializza la parte depth-stencil della fase di unione di output . In particolare, questo oggetto inizializza i test di profondità e stencil.
Per creare un oggetto depth-stencil-state, vedere CreateDepthStencilState.
Stato blend
Questo gruppo di stato (vedere D3D10_BLEND_DESC) inizializza la parte di fusione della fase di unione di output .
Per creare un oggetto stato blend, vedere CreateBlendState.
Stato sampler
Questo gruppo di stato (vedere D3D10_SAMPLER_DESC) inizializza un oggetto sampler. Un oggetto sampler viene usato dalle fasi dello shader per filtrare le trame in memoria.
Differenze tra Direct3D 9 e Direct3D 10:
- In Direct3D 10, l'oggetto sampler non è più associato a una trama specifica, descrive semplicemente come filtrare in base a qualsiasi risorsa associata.
Per creare un oggetto sampler-state, vedere CreateSamplerState.
Considerazioni sulle prestazioni
La progettazione dell'API per l'uso degli oggetti di stato crea diversi vantaggi in termini di prestazioni. Questi includono la convalida dello stato in fase di creazione dell'oggetto, l'abilitazione della memorizzazione nella cache degli oggetti di stato nell'hardware e la riduzione significativa della quantità di stato passata durante una chiamata API di impostazione dello stato (passando un handle all'oggetto di stato anziché lo stato).
Per ottenere questi miglioramenti delle prestazioni, è necessario creare gli oggetti di stato all'avvio dell'applicazione, ben prima del ciclo di rendering. Gli oggetti di stato non sono modificabili, ovvero una volta creati, non è possibile modificarli. È invece necessario distruggerli e ricrearli. Per far fronte a questa restrizione, è possibile creare fino a 4096 di ogni tipo di oggetti di stato. Ad esempio, è possibile creare diversi oggetti sampler con varie combinazioni di stato sampler. La modifica dello stato del campionatore viene quindi eseguita chiamando l'API Set appropriata che passa un handle all'oggetto (anziché allo stato del campionatore). In questo modo si riduce significativamente la quantità di overhead durante ogni frame di rendering per modificare lo stato poiché il numero di chiamate e la quantità di dati sono notevolmente ridotti.
In alternativa, è possibile scegliere di usare il sistema di effetti che gestirà automaticamente la creazione efficiente e la distruzione degli oggetti di stato per l'applicazione.
Argomenti correlati