Condividi tramite


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)

Vedi anche

D3DHAL_DP2COMMAND

D3DRENDERSTATETYPE

D3dDrawPrimitives2

DD_SURFACE_GLOBAL

DD_SURFACE_LOCAL