PFND3DDDI_SETSTREAMSOURCEFREQ funzione di callback (d3dumddi.h)

La funzione SetStreamSourceFreq imposta il divisore di frequenza di un'origine di flusso associata a un vertex buffer.

Sintassi

PFND3DDDI_SETSTREAMSOURCEFREQ Pfnd3dddiSetstreamsourcefreq;

HRESULT Pfnd3dddiSetstreamsourcefreq(
  HANDLE hDevice,
  const D3DDDIARG_SETSTREAMSOURCEFREQ *unnamedParam2
)
{...}

Parametri

hDevice

Handle per il dispositivo di visualizzazione (contesto grafico).

unnamedParam2

pData [in]

Puntatore a una struttura D3DDDIARG_SETSTREAMSOURCEFREQ che specifica la modalità di impostazione del divisore di frequenza per l'origine del flusso.

Valore restituito

SetStreamSourceFreq restituisce S_OK o un risultato di errore appropriato se il divisore di frequenza per la parte dell'origine del flusso dei vertici non è impostato correttamente.

Commenti

Un driver di visualizzazione in modalità utente per un dispositivo che supporta vertex shader versione 3.0 e successive deve implementare la divisione della frequenza del flusso dei vertici. Per la versione 2.0 e i modelli precedenti di vertex shader (inclusa la funzione fissa), il vertex shader viene chiamato una volta per ogni vertice. Per ogni chiamata, i registri dei vertici di input vengono inizializzati con elementi vertice univoci dai flussi dei vertici. Tuttavia, se il driver usa la divisione della frequenza del flusso dei vertici, il vertex shader (3,0 e versioni successive) può essere chiamato per inizializzare i registri di input applicabili a una frequenza meno frequente.

Dopo che il divisore di frequenza del flusso è impostato, ad esempio su 2, il driver deve recuperare i dati dal flusso e passare questi dati ai vertici di input applicabili registra ogni 2 vertici. Questo divisore influisce su ogni elemento nel flusso.

Il driver usa il divisore di frequenza per calcolare l'offset dei vertici nel buffer dei vertici in base alla formula seguente:

VertexOffset = ((VertexIndex / Divider) * StreamStride) + StreamOffset

Per ogni flusso di vertici utilizzato, se il driver riceve un valore del vertice di avvio durante una chiamata alla funzione DrawPrimitive del driver, il driver divide anche questo valore del vertice iniziale per il divisore di frequenza e fattori il risultato nella formula. Questo valore del vertice iniziale viene fornito nel membro VStart della struttura D3DDDIARG_DRAWPRIMITIVE . La formula seguente include il valore del vertice iniziale:

VertexOffset = (StartVertex / Divider) + 
       ((VertexIndex / Divider) * StreamStride) + StreamOffset 

Si noti che le formule precedenti usano la divisione integer.

Il driver ignora l'impostazione del divisore di frequenza di un flusso per le primitive indicizzate o se il driver supporta solo un modello vertex shader precedente alla versione 3.0 (inclusa la funzione fissa).

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_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive