Trame a più elementi (Direct3D 9)
Le trame tradizionali sono considerate trame a singolo elemento. Le trame a più elementi consentono alle applicazioni di scrivere simultaneamente in più elementi di una trama dal pixel shader. Il risultato del passaggio di rendering successivo è che un'applicazione può usare uno o più elementi come trama a singolo elemento, ovvero come input per lo shader pixel. Questi elementi aggiuntivi possono essere considerati come un archivio temporaneo per i risultati intermedi che verranno usati in un passaggio successivo dall'applicazione.
La prima generazione di hardware che espone questa funzionalità presenta le restrizioni seguenti:
- Tutte le superfici di trama a più elementi verranno allocate automaticamente. Questa limitazione viene risolta trattando questo tipo di nuovo tipo di formato di superficie con più canali RGBA interleaved.
- Tutti gli elementi della trama di più elementi possono avere la stessa profondità di bit. Questa limitazione è espressa dal nome dei nuovi formati di superficie.
- Non è possibile visualizzare una trama a più elementi. In altre parole, deve essere disattivato solo sullo schermo. Questa limitazione è espressa dall'enumerazione surface-format.
- Non è consentito alcun dithering, test alfa, fogging, fusione, raster-op o mascheramento. Non viene eseguita alcuna elaborazione dello shader post pixel, ad eccezione del test z e dello stencil.
- La trama non può essere una mappa mipmap. La creazione della catena mip avrà esito negativo.
- Lo stesso elemento non può essere impostato come trama contemporaneamente è una destinazione di rendering. Tuttavia, diversi elementi della stessa superficie di trama a più elementi possono essere contemporaneamente trame e destinazioni di rendering.
- Non è supportato alcun antialiasing.
- Le superfici di trama a più elementi, quando usate come trama, non possono essere filtrate. Questa limitazione può essere verificata usando CheckDeviceFormat.
- Le superfici di trama a più elementi non possono essere bloccate.
- Più di una superficie di trama di più elementi può essere usata simultaneamente assegnando ognuno a varie fasi, come con le trame normali.
- Le superfici della trama a più elementi supportano la conversione di gamma da 2.2 a 1.0 in un'operazione di lettura, come con altri formati di trama.
- Alcune implementazioni non applicano la maschera di scrittura di output (D3DRS_COLORWRITEENABLE). Quelli che possono avere maschere di scrittura di colori indipendenti. Questo è espresso usando una nuova funzionalità bit. Il numero di maschere di scrittura di colori indipendenti disponibili sarà uguale al numero massimo di elementi di cui il dispositivo è in grado.
- Cancella tutti gli elementi della trama a più elementi impostati come destinazione di rendering.
L'utilizzo di trame a più elementi segue questa procedura:
- Le applicazioni individuano il supporto per questa funzionalità controllando la disponibilità di formati di trama a più elementi.
- L'applicazione crea queste superfici chiamando CreateTexture.
- L'applicazione imposta la superficie come destinazione di rendering usando la chiamata SetRenderTarget . Il pixel shader fornisce l'output alle superfici usando l'istruzione mov - ps .
- SetTexture viene chiamato per impostare una superficie di trama a più elementi su una fase specifica. Come per altre trame, la stessa superficie può essere impostata su più fasi contemporaneamente.
- SetSamplerState viene chiamato per impostare D3DSAMP_ELEMENTINDEX sul numero di elemento appropriato nella trama a più elementi da cui viene eseguito l'esempio di sampler. Il valore predefinito per questo stato è 0, il che significa che le trame non a più elementi funzioneranno. L'impostazione di questo stato su un numero inappropriato comporta un comportamento non definito, se la trama a più elementi è ampia solo due elementi, ma viene chiesto al sampler di eseguire l'esempio dal quarto elemento, ad esempio.
Supporto dell'API
Di seguito è riportato un riepilogo degli elementi dell'API che supportano trame di più elementi:
Il formato di superficie D3DFMT_MULTI2_ARGB8 esprime la natura interleaved del formato.
Lo stato di esempio D3DSAMP_ELEMENTINDEX indica l'indice degli elementi da usare.
Gli stati di rendering seguenti supportano trame di più elementi:
- D3DRS_COLORWRITEENABLE1
- D3DRS_COLORWRITEENABLE2
- D3DRS_COLORWRITEENABLE3
D3DRS_COLORWRITEENABLE si applica allo zero (o all'elemento) di rendering.
Il flag D3DPMISCCAPS_INDEPENDENTWRITEMASKS indica che il dispositivo supporta maschere di scrittura indipendenti per più trame di elementi o più destinazioni di rendering.
Argomenti correlati