Condividi tramite


Fusione delle trame (Direct3D 9)

Direct3D può fondere fino a otto trame in primitive in un singolo passaggio. L'uso della fusione di più trame può aumentare significativamente la frequenza dei fotogrammi di un'applicazione Direct3D. Un'applicazione usa la fusione di più trame per applicare trame, ombreggiature, illuminazione speculare, illuminazione diffusa e altri effetti speciali in un unico passaggio.

Per usare la fusione delle trame, l'applicazione deve prima verificare se l'hardware dell'utente lo supporta. Queste informazioni sono disponibili nel membro TextureCaps della struttura D3DCAPS9. Per informazioni dettagliate su come eseguire una query sull'hardware dell'utente per le funzionalità di fusione delle trame, vedere IDirect3DDevice9::GetDeviceCaps.

Stadi delle texture e cascata di fusione delle texture

Direct3D supporta la fusione di più trame a passaggio singolo tramite l'uso delle fasi della trama. Una fase di trama accetta due argomenti ed esegue un'operazione di fusione su di essi, passando il risultato per un'ulteriore elaborazione o per la rasterizzazione. È possibile visualizzare una fase di trama come illustrato nel diagramma seguente.

diagramma di una fase di trama

Come illustrato nel diagramma precedente, gli stadi di texture fondono due argomenti usando un operatore specificato. Le operazioni comuni includono la semplice modularità o l'aggiunta del colore o dei componenti alfa degli argomenti, ma sono supportate più di due dozzine di operazioni. Gli argomenti per una fase possono essere una trama associata, il colore iterato o alfa (iterato durante l'ombreggiatura gouraud), il colore arbitrario e l'alfa oppure il risultato della fase di trama precedente. Per altre informazioni, vedere Texture Blending Operations and Arguments (Direct3D 9).

Nota

Direct3D distingue la fusione dei colori dalla fusione alfa. Le applicazioni impostano operazioni di fusione e argomenti per colore e alfa singolarmente e i risultati di tali impostazioni sono indipendenti l'uno dall'altro.

 

La combinazione di argomenti e operazioni usate da più fasi di fusione definisce un semplice linguaggio di fusione basato su flusso. I risultati di una fase passano verso il basso fino a un'altra fase, da quella fase alla successiva e così via. Il concetto di risultati che fluiscono da una fase all'altra fino a essere infine rasterizzati su un poligono è spesso chiamato cascata di fusione delle texture. Il diagramma seguente mostra come le diverse fasi di texture compongono la cascata di fusione delle texture.

diagramma delle fasi di texture nella cascata di fusione delle texture

Ogni fase in un dispositivo ha un indice in base zero. Direct3D consente fino a otto fasi di fusione, anche se è consigliabile controllare sempre le funzionalità del dispositivo per determinare il numero di fasi supportate dall'hardware corrente. La prima fase di fusione è in corrispondenza dell'indice 0, la seconda è a 1 e così via, fino all'indice 7. Il sistema combina fasi in ordine crescente di indice.

Usare solo il numero di fasi necessarie; Le fasi di fusione inutilizzate sono disabilitate per impostazione predefinita. Pertanto, se l'applicazione usa solo le prime due fasi, è necessario impostare solo operazioni e argomenti per la fase 0 e 1. Il sistema combina le due fasi e ignora le fasi disabilitate.

Nota

Se l'applicazione varia il numero di fasi usate per situazioni diverse, ad esempio quattro fasi per alcuni oggetti e solo due per altre, non è necessario disabilitare in modo esplicito tutte le fasi usate in precedenza. Un'opzione consiste nel disabilitare l'operazione di colore per la prima fase inutilizzata, quindi non verranno applicate tutte le fasi con un indice superiore. Un'altra opzione consiste nel disabilitare completamente il mapping delle trame impostando l'operazione di colore per la prima fase della trama (fase 0) su D3DTOP_DISABLE. Una terza opzione è quando una fase di trama ha D3DTSS_COLORARG1 uguale a D3DTA_TEXTURE e il puntatore di trama per la fase è NULL, questa fase e tutte le fasi successive non vengono elaborate.

 

Altre informazioni sono contenute negli argomenti seguenti.

trame Direct3D