PFND3DDDI_DRAWRECTPATCH funzione di callback (d3dumddi.h)

La funzione DrawRectPatch disegna una patch rettangolare nuova o memorizzata nella cache o aggiorna la specifica di una patch definita in precedenza.

Sintassi

PFND3DDDI_DRAWRECTPATCH Pfnd3dddiDrawrectpatch;

HRESULT Pfnd3dddiDrawrectpatch(
  [in] HANDLE hDevice,
       const D3DDDIARG_DRAWRECTPATCH *unnamedParam2,
       const D3DDDIRECTPATCH_INFO *unnamedParam3,
       const FLOAT *unnamedParam4
)
{...}

Parametri

[in] hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

pData [in]

Puntatore a una struttura D3DDDIARG_DRAWRECTPATCH che descrive la patch rettangolare da disegnare.

unnamedParam3

pInfo [in]

facoltativo. Puntatore a una struttura D3DDDIRECTPATCH_INFO che descrive le informazioni sulla patch rettangolare.

unnamedParam4

pPatch [in]

facoltativo. Puntatore a un buffer contenente quattro valori a virgola mobile (D3DFLOAT[4]) che forniscono i conteggi dei segmenti per ognuno dei quattro bordi della patch rettangolare.

Valore restituito

DrawRectPatch restituisce S_OK o un risultato di errore appropriato se la patch rettangolare non viene disegnata correttamente.

Commenti

Quando il runtime di Microsoft Direct3D chiamapPatch la funzione DrawRectPatch del driver di visualizzazione in modalità utente, può facoltativamente fornire informazioni nei parametri e pInfo . Il runtime imposta i flag nel membro Flags della struttura D3DDDIARG_DRAWRECTPATCH specificata da pData per indicare se fornisce queste informazioni facoltative.

Il runtime fornisce un valore UINT nel membro Handle di D3DDDIARG_DRAWRECTPATCH per fare riferimento alla superficie della patch. Ogni volta che il runtime ridisegna la superficie di patch, passa il valore dell'handle di patch e non è necessario specificare nuovamente la struttura dei dati D3DDDIRECTPATCH_INFO per la superficie della patch. Il driver di visualizzazione in modalità utente può precomputare e memorizzare nella cache i coefficienti di forward-difference e qualsiasi altra informazione. Di conseguenza, le chiamate successive alla funzione DrawRectPatch del driver che usano lo stesso valore dell'handle di patch vengono eseguite in modo più efficiente.

Il valore effettivo in Handle è determinato dall'applicazione e non è sotto il controllo di runtime. Pertanto, il driver deve gestire qualsiasi valore che può essere specificato da un UINT.

Il valore handle speciale pari a zero indica che la patch è dinamica; pertanto, il driver non può precomputare o memorizzare nella cache le informazioni per la patch. Un valore diverso da zero per Handle indica che la patch è statica (o aggiornata con bassa frequenza); pertanto, il driver può precomputare e memorizzare nella cache le informazioni per la patch.

Il driver deve gestire gli scenari seguenti nella relativa funzione DrawRectPatch :

  • Se il membro Handle è zero, la patch è dinamica. Il driver non deve né precomputare né memorizzare nella cache le informazioni per la patch. In questo caso, il runtime passa un puntatore a una struttura D3DDDIRECTPATCH_INFO nel parametro pInfo e imposta il flag RTPATCHFLAG_HASINFO nel membro Flags della struttura D3DDDIARG_DRAWRECTPATCH per indicare la presenza della struttura D3DDDIRECTPATCH_INFO in pInfo. Facoltativamente, il runtime può anche impostare il flag RTPATCHFLAG_HASSEGS in Flag per indicare la presenza delle informazioni sul segmento specificate dal parametro pPatch . Tuttavia, se il runtime non fornisce informazioni sui segmenti in pPatch, il runtime deve usare invece il valore di stato di rendering D3DRS_PATCHSEGMENTS.
  • Se un valore Handle diverso da zero non è stato specificato in precedenza in una chiamata precedente alla funzione DrawRectPatch del driver, il runtime disegna una nuova patch memorizzabile nella cache. Il driver deve allocare memoria per archiviare i dati memorizzati nella cache e deve aggiungere questi dati alla relativa tabella di handle di patch. Poiché il runtime non ha disegnato in precedenza questa patch, il runtime deve impostare il flag RTPATCHFLAG_HASINFO e passare un puntatore a una struttura D3DDDIRECTPATCH_INFO nel parametro pInfo . Per verificare la presenza delle informazioni sulla patch, il driver deve verificare la presenza del flag di RTPATCHFLAG_HASINFO. Se non vengono specificate informazioni sulla patch, il driver deve ignorare la chiamata DrawRectPatch e non deve allocare memoria per i dati memorizzati nella cache nella tabella di handle patch. Facoltativamente, il runtime può impostare il flag RTPATCHFLAG_HASSEGS per indicare la presenza delle informazioni sul segmento. Tuttavia, se il runtime non fornisce informazioni sui segmenti in pPatch, il runtime deve usare invece il valore di stato di rendering D3DRS_PATCHSEGMENTS.
  • Se in precedenza è stato specificato un valore Handle diverso da zero in una chiamata precedente alla funzione DrawRectPatch del driver e viene impostato il flag RTPATCHFLAG_HASINFO, il runtime aggiorna la definizione per la patch. Il runtime passa un puntatore a una struttura D3DDDIRECTPATCH_INFO nel parametro pInfo e il driver deve ricompilare e ricapitolare le informazioni sulla patch. Facoltativamente, il runtime può impostare il flag RTPATCHFLAG_HASSEGS per indicare la presenza delle informazioni sul segmento. Tuttavia, se il runtime non fornisce informazioni sui segmenti in pPatch, il runtime deve usare invece il valore di stato di rendering D3DRS_PATCHSEGMENTS.
  • Se in precedenza è stato specificato un valore Handle diverso da zero in una chiamata precedente alla funzione DrawRectPatch del driver e il flag RTPATCHFLAG_HASINFO non è impostato, il runtime ridisegna la patch. Il driver deve usare le informazioni memorizzate nella cache per disegnare la patch. In questo caso, il driver ignora i flussi dei vertici correnti e le informazioni memorizzate nella cache vengono invece usate. Tuttavia, il runtime può comunque specificare nuove informazioni sui segmenti; pertanto, il driver deve verificare la presenza del flag RTPATCHFLAG_HASSEGS e gestire le informazioni sui segmenti specificate anche se usa una patch memorizzata nella cache.
Il driver riceve una notifica per rilasciare informazioni sulle patch memorizzate nella cache tramite lo stato di rendering D3DRS_DELETERTPATCH. Il valore di questo stato di rendering è la patch da eliminare.

Requisiti

Requisito Valore
Client minimo supportato Disponibile in Windows Vista e versioni successive dei sistemi operativi Windows.
Piattaforma di destinazione Desktop
Intestazione d3dumddi.h (include D3dumddi.h)

Vedi anche

D3DDDIARG_DRAWRECTPATCH

D3DDDI_DEVICEFUNCS