D3DHAL_DRAWPRIMITIVES2DATA struttura (d3dhal.h)
La struttura D3DHAL_DRAWPRIMITIVES2DATA contiene le informazioni necessarie dalla funzione D3dDrawPrimitives2 per eseguire il rendering delle primitive.
Sintassi
typedef struct _D3DHAL_DRAWPRIMITIVES2DATA {
ULONG_PTR dwhContext;
DWORD dwFlags;
DWORD dwVertexType;
LPDDRAWI_DDRAWSURFACE_LCL lpDDCommands;
DWORD dwCommandOffset;
DWORD dwCommandLength;
union {
LPDDRAWI_DDRAWSURFACE_LCL lpDDVertex;
LPVOID lpVertices;
};
DWORD dwVertexOffset;
DWORD dwVertexLength;
DWORD dwReqVertexBufSize;
DWORD dwReqCommandBufSize;
LPDWORD lpdwRStates;
union {
DWORD dwVertexSize;
HRESULT ddrval;
};
DWORD dwErrorOffset;
} D3DHAL_DRAWPRIMITIVES2DATA;
Members
dwhContext
Specifica l'handle di contesto del dispositivo Direct3D.
dwFlags
Specifica i flag che forniscono istruzioni aggiuntive al driver o forniscono informazioni dal driver. Questo membro può essere un OR bit per bit dei valori seguenti:
Valore | Significato |
---|---|
D3DHALDP2_EXECUTEBUFFER | Il comando e i buffer dei vertici sono stati creati nella memoria di sistema. Il driver deve aggiornare la matrice di stato a cui punta lpdwRStates. Questo flag è impostato solo da Direct3D. |
D3DHALDP2_REQCOMMANDBUFSIZE | Il driver deve essere in grado di aumentare il buffer dei comandi corrente per almeno le dimensioni specificate in dwReqCommandBufSize. I driver che non supportano la multibuffering dei buffer dei comandi possono ignorare questo flag. Questo flag è impostato solo da Direct3D. |
D3DHALDP2_REQVERTEXBUFSIZE | Il driver deve essere in grado di allocare un buffer dei vertici di almeno le dimensioni specificate in dwReqCommandBufSize. I driver che non supportano la multibuffering dei buffer dei vertici possono ignorare questo flag. Questo flag è impostato solo da Direct3D. |
D3DHALDP2_SWAPCOMMANDBUFFER | Il driver può scambiare il buffer a cui punta lpDDCommands con un nuovo buffer di comando e restituire immediatamente, elaborando in modo asincrono il buffer originale mentre Direct3D riempie il nuovo buffer dei comandi. I driver che non supportano la multibuffering dei buffer dei comandi possono ignorare questo flag. Questo flag è impostato solo da Direct3D. |
D3DHALDP2_SWAPVERTEXBUFFER | Il driver può scambiare il buffer a cui punta lpDDVertex o lpVertices con un nuovo buffer vertex e restituire immediatamente, elaborando in modo asincrono il buffer originale mentre Direct3D riempie il nuovo buffer vertex. I driver che non supportano la multibuffering dei buffer dei vertici possono ignorare questo flag. Questo flag è impostato solo da Direct3D. |
D3DHALDP2_USERMEMVERTICES | Il membro lpVertices è valido in modo che il driver debba ottenere i dati del vertice dalla memoria allocata dall'utente a cui punta lpVertices. Questo flag è impostato solo da Direct3D. |
D3DHALDP2_VIDMEMCOMMANDBUF | Il buffer dei comandi allocato dal driver come buffer di scambio non è in memoria di sistema. Questo flag può essere impostato dai driver che supportano la multibuffering dei buffer dei comandi. |
D3DHALDP2_VIDMEMVERTEXBUF | Il buffer del vertice allocato dal driver come buffer di scambio non è in memoria di sistema. Questo flag può essere impostato dai driver che supportano la multibuffering dei buffer dei vertici. |
dwVertexType
Identifica il FVF dei dati nel buffer del vertice; ovvero , dwVertexType specifica quali campi dati per vertice sono presenti nel buffer del vertice a cui punta lpDDVertex o lpVertices . Questo membro può essere un OR bit per bit dei valori nella tabella seguente. Viene impostato solo uno dei flag di D3DFVF_TEXx .
Valore | Significato |
---|---|
D3DFVF_DIFFUSE | Ogni vertice ha un colore diffuso. |
D3DFVF_SPECULAR | Ogni vertice ha un colore speculare. |
D3DFVF_TEX0 | Nessuna coordinata di trama viene fornita con i dati del vertice. |
D3DFVF_TEX1 | Ogni vertice ha un set di coordinate della trama. |
D3DFVF_TEX2 | Ogni vertice ha due set di coordinate della trama. |
D3DFVF_TEX3 | Ogni vertice ha tre set di coordinate della trama. |
D3DFVF_TEX4 | Ogni vertice ha quattro set di coordinate della trama. |
D3DFVF_TEX5 | Ogni vertice ha cinque set di coordinate di trama. |
D3DFVF_TEX6 | Ogni vertice ha sei set di coordinate di trama. |
D3DFVF_TEX7 | Ogni vertice ha sette set di coordinate di trama. |
D3DFVF_TEX8 | Ogni vertice ha otto set di coordinate della trama. |
D3DFVF_XYZRHW | Ogni vertice ha coordinate x, y, z e w. Questo flag è sempre impostato. |
lpDDCommands
dwCommandOffset
dwCommandLength
Specifica il numero di byte di dati dei comandi validi nell'area che lpDDCommands punta a partire da dwCommandOffset.
lpDDVertex
Punta alla struttura DD_SURFACE_LOCAL che identifica la superficie DirectDraw contenente i dati del vertice quando il flag di D3DHALDP2_USERMEMVERTICES non è impostato in dwFlags. Forma un'unione con lpVertices.
lpVertices
Punta a un blocco di memoria in modalità utente contenente i dati del vertice quando il flag di D3DHALDP2_USERMEMVERTICES è impostato in dwFlags.
dwVertexOffset
Specifica il numero di byte nella superficie a cui punta lpDDVertex o lpVertices in cui iniziano i dati del vertice.
dwVertexLength
Specifica il numero di vertici per i quali esistono dati validi nella superficie a cui punta lpDDVertex o lpVertices. Questi dati validi iniziano a dwVertexOffset.
dwReqVertexBufSize
Specifica il numero minimo di byte che il driver deve allocare per il buffer dei vertici di scambio. Questo membro è valido solo quando viene impostato il flag D3DHALDP2_REQVERTEXBUFSIZE. I driver che non supportano la multibuffering dei buffer dei vertici devono ignorare questo membro.
dwReqCommandBufSize
Specifica il numero minimo di byte per cui il driver deve aumentare il buffer dei comandi di scambio. Questo membro è valido solo quando viene impostato il flag di D3DHALDP2_REQCOMMANDBUFSIZE. I driver che non supportano la multibuffering dei buffer dei comandi devono ignorare questo membro.
lpdwRStates
Punta a una matrice di stato di rendering che il driver deve aggiornare quando analizza i comandi di stato di rendering dal buffer dei comandi. Il driver deve aggiornare questa matrice solo quando il flag di D3DHALDP2_EXECUTEBUFFER è impostato in dwFlags. Il driver deve usare i tipi enumerati D3DRENDERSTATETYPE per aggiornare l'elemento appropriato della matrice di stato di rendering.
dwVertexSize
Specifica le dimensioni di ogni vertice, in byte. Questo membro forma un'unione con ddrval.
ddrval
Specifica la posizione in cui il driver scrive il valore restituito di D3dDrawPrimitives2. D3D_OK indica l'esito positivo. In caso contrario, il driver deve restituire il codice di errore D3DERR_Xxx appropriato. Per altre informazioni, vedere Codici restituiti per callback driver Direct3D.
Valore | Significato |
---|---|
D3D_OK | Operazione riuscita. |
D3DERR_COMMAND_UNPARSED | Il driver richiede il runtime Direct3D per analizzare il buffer di esecuzione. |
dwErrorOffset
Ogni D3DHAL_DP2RESPONSEQUERY è seguito dai dati seguenti correlati alla query:
- BOOL per D3DQUERYTYPE_EVENT
- DWORD per D3DQUERYTYPE_OCCLUSION
- struttura D3DDEVINFO_VCACHE per D3DQUERYTYPE_VCACHE
Commenti
Si noti che il membro dwVertexOffset specifica i valori in byte; Il membro dwVertexLength specifica i valori nei vertici.
Per calcolare i dati validi, in byte, presenti nella superficie in lpDDVertex o lpVertices, moltiplicare il valore in dwVertexLength per il valore in dwVertexSize.
Requisiti
Requisito | Valore |
---|---|
Intestazione | d3dhal.h (include D3dhal.h) |