Condividi tramite


struttura D3DHAL_DP2VERTEXSHADER (d3dhal.h)

Solo DirectX 8.0 e versioni successive.

La struttura D3DHAL_DP2VERTEXSHADER imposta il vertex shader corrente o elimina un vertex shader, a seconda del codice operativo ricevuto (D3DDP2OP_SETVERTEXSHADER o D3DDP2OP_DELETEVERTEXSHADER) da D3dDrawPrimitives2.

Sintassi

typedef struct _D3DHAL_DP2VERTEXSHADER {
  DWORD dwHandle;
} D3DHAL_DP2VERTEXSHADER;

Membri

dwHandle

Handle per la visualizzazione.

Osservazioni

Tutti i driver di livello DirectX 8.0 devono supportare il token D3DDP2OP_SETVERTEXSHADER perché viene inviato anche se il driver non supporta l'elaborazione dei vertici programmabile. In questo caso, tuttavia, l'handle dello shader è sempre un codice FVF che indica l'elaborazione di funzioni fisse dei dati dei vertici. Il driver deve usare il codice FVF archiviato nel membro dwHandle come formato dei dati dei vertici nel flusso zero. Un driver che supporta l'elaborazione dei vertici programmabile deve esaminare l'handle per determinare se fa riferimento a uno shader creato in precedenza con D3DDP2OP_CREATEVERTEXSHADER o un codice FVF e intraprendere l'azione appropriata.

I pixel e i vertex shader sono ortogonali. Pertanto, se viene selezionato un codice FVF legacy come vertex shader corrente, questo non implica l'elaborazione dei pixel legacy. Per reimpostare l'elaborazione dei pixel in una modalità sottoprogrammabile, è necessario impostare anche il pixel shader corrente su zero. Prestare attenzione al driver per reimpostare solo lo stato di elaborazione dei vertici su una modalità di funzione fissa e non sullo stato di elaborazione pixel quando il vertex shader è impostato su un codice FVF.

Quando si passa dall'elaborazione dei vertici a funzione fissa all'elaborazione dei vertici programmabile, i valori dello stato di rendering legacy e delle matrici devono essere mantenuti. Se e quando si verifica un passaggio dall'elaborazione dei vertici programmabile a una funzione fissa (il driver riceve un D3DDP2OP_SETVERTEXSHADER con un FVF come handle dello shader), tale stato mantenuto deve essere ripristinato.

Quando si passa da uno shader programmabile all'altro, qualsiasi registro costante con un valore specificato nella definizione di tale shader deve essere impostato su tale valore. I valori di tutti gli altri registri costanti devono rimanere invariati.

Per le operazioni D3DDP2OP_SETVERTEXSHADERDECL, il runtime specifica un codice FVF legacy o un handle di dichiarazione DirectX 9.0 nel membro dwHandle. Il runtime indica un handle di dichiarazione DirectX 9.0 impostando il bit 0 dell'handle. Per le operazioni di D3DDP2OP_SETVERTEXSHADERFUNC, il runtime imposta dwHandle su zero per indicare una pipeline di funzione fissa.

Fabbisogno

Requisito Valore
intestazione d3dhal.h (include D3dhal.h)

Vedere anche

D3DDP2OP_CREATEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADER

D3DDP2OP_DELETEVERTEXSHADERDECL

D3DDP2OP_DELETEVERTEXSHADERFUNC

D3DDP2OP_SETSTREAMSOURCE

D3DDP2OP_SETSTREAMSOURCEUM

D3DDP2OP_SETVERTEXSHADER

D3DDP2OP_SETVERTEXSHADERDECL

D3DDP2OP_SETVERTEXSHADERFUNC

D3DHAL_DP2CREATEVERTEXSHADER

D3DHAL_DP2SETVERTEXSHADERCONST

D3dDrawPrimitives2