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 il pixel shader. 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 è risolta considerando 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.
- Una trama a più elementi non può essere primaria/visualizzabile. In altre parole, deve essere solo fuori schermo. Questa limitazione è espressa dall'enumerazione in formato superficie.
- Non è consentito alcun dithering, test alfa, fogging, fusione, raster-op o mascheramento. Non viene eseguita alcuna elaborazione post-pixel shader, ad eccezione del test z e dello stencil.
- La trama non può essere un mipmap. La creazione della catena mip avrà esito negativo.
- Non è possibile impostare lo stesso elemento come trama contemporaneamente come destinazione di rendering. Tuttavia, elementi diversi 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, se 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 a più elementi possono essere usate simultaneamente assegnandole a varie fasi, proprio come con le trame normali.
- Le superfici di 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 valore viene espresso usando un nuovo bit di funzionalità. Il numero di maschere di scrittura colore indipendenti disponibili sarà uguale al numero massimo di elementi di cui il dispositivo è in grado di supportare.
- Clear cancella tutti gli elementi della trama a più elementi impostata come destinazione di rendering.
L'utilizzo delle 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 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 vengono campionati gli esempi. 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 è larga solo due elementi, ma viene richiesto al campionatore di campionare dal quarto elemento, ad esempio.
Supporto API
Di seguito è riportato un riepilogo degli elementi API che supportano trame a più elementi:
Il formato della superficie D3DFMT_MULTI2_ARGB8 esprime la natura interleaved del formato.
Lo stato D3DSAMP_ELEMENTINDEX sampler indica l'indice dell'elemento da usare.
Gli stati di rendering seguenti supportano trame a più elementi:
- D3DRS_COLORWRITEENABLE1
- D3DRS_COLORWRITEENABLE2
- D3DRS_COLORWRITEENABLE3
D3DRS_COLORWRITEENABLE si applica allo zero della destinazione di rendering (o dell'elemento).
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