Condividi tramite


Vertex Shader

Tutti i driver che supportano DirectX 8.0 DDI devono supportare il nuovo token DP2 D3DDP2OP_SETVERTEXSHADER anche se i vertex shader programmabili non sono supportati nell'hardware. Ciò è dovuto al fatto che D3DDP2OP_SETVERTEXSHADER è il meccanismo in base al quale il codice FVF dei dati dei vertici in ingresso viene comunicato al driver quando si usa la funzione fissa e l'elaborazione dei vertici programmabili.

D3DDP2OP_SETVERTEXSHADER può essere usato per notificare al driver l'handle del vertex programmabile corrente da usare o il codice FVF dei dati del vertice per l'elaborazione del vertice della funzione fissa. Lo spazio di gestione per i vertex shader viene gestito dal runtime e include codici FVF validi. Pertanto, un handle vertex shader può fare riferimento a un handle di vertex programmabile creato in precedenza tramite il token DP2 D3DDP2OP_CREATEVERTEXSHADER o al codice FVF di un formato vertex da elaborare tramite l'elaborazione del vertice della funzione fissa.

Il driver per l'hardware che non supporta l'elaborazione del vertice programmabile deve elaborare D3DDP2OP_SETVERTEXSHADER per determinare il codice FVF (e quindi l'elaborazione da eseguire) sui dati del vertice associati a zero. Ciò è particolarmente importante quando si elaborano le primitive di memoria utente . In questo caso, l'unico modo per determinare il codice FVF dei dati dei vertici forniti è tramite il token di D3DDP2OP_SETVERTEXSHADER. Se il bit meno significativo dell'handle è impostato (1), l'handle è il gestore dello shader vertex. Se il bit meno significativo è chiaro (0), l'handle è un codice FVF legacy.

Se il codice FVF di un buffer vertex è in conflitto con quello specificato da D3DDP2OP_SETVERTEXSHADER il driver deve ignorare il codice FVF del buffer del vertice e continuare.

Il runtime DirectX garantisce che solo i codici FVF vengano passati come handle del vertex shader a un driver che non supporta l'elaborazione dei vertici programmabili. Tuttavia, tale driver deve avere codice di debug per verificare che il codice FVF passato sia supportato.