PFND3DDDI_SETSTREAMSOURCEFREQ fonction de rappel (d3dumddi.h)

La fonction SetStreamSourceFreq définit le diviseur de fréquence d’une source de flux liée à une mémoire tampon de vertex.

Syntaxe

PFND3DDDI_SETSTREAMSOURCEFREQ Pfnd3dddiSetstreamsourcefreq;

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

Paramètres

hDevice

Handle de l’appareil d’affichage (contexte graphique).

unnamedParam2

pData [in]

Pointeur vers une structure de D3DDDIARG_SETSTREAMSOURCEFREQ qui spécifie la façon dont le diviseur de fréquence pour la source de flux est défini.

Valeur retournée

SetStreamSourceFreq retourne S_OK ou un résultat d’erreur approprié si le diviseur de fréquence pour la partie de la source de flux de vertex n’est pas correctement défini.

Remarques

Un pilote d’affichage en mode utilisateur pour un appareil qui prend en charge le nuanceur de vertex version 3.0 et ultérieure doit implémenter la division de la fréquence du flux de vertex. Pour les modèles de nuanceur de vertex version 2.0 et antérieures (y compris la fonction fixe), le nuanceur de vertex est appelé une fois pour chaque sommet. Pour chaque appel, les registres de vertex d’entrée sont initialisés avec des éléments de vertex uniques provenant des flux de vertex. Toutefois, si le pilote utilise la division de la fréquence du flux de vertex, le nuanceur de vertex (3.0 et versions ultérieures) peut être appelé pour initialiser les registres d’entrée applicables à un rythme moins fréquent.

Une fois que le diviseur de fréquence du flux est défini, par exemple sur 2, le pilote doit extraire les données du flux et passer ces données dans les registres de vertex d’entrée applicables tous les 2 sommets. Ce diviseur affecte chaque élément du flux.

Le pilote utilise le diviseur de fréquence pour calculer le décalage de vertex dans la mémoire tampon de vertex selon la formule suivante :

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

Pour chaque flux de vertex utilisé, si le pilote reçoit une valeur start-vertex lors d’un appel à la fonction DrawPrimitive du pilote, le pilote divise également cette valeur start-vertex par le diviseur de fréquence et prend en compte le résultat dans la formule. Cette valeur de début-vertex est fournie dans le membre VStart de la structure D3DDDIARG_DRAWPRIMITIVE . La formule suivante inclut la valeur start-vertex :

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

Notez que les formules précédentes utilisent la division entière.

Le pilote ignore le paramètre du diviseur de fréquence d’un flux pour les primitives indexées ou si le pilote prend uniquement en charge un modèle de nuanceur de vertex antérieur à la version 3.0 (fonction fixe comprise).

Configuration requise

Condition requise Valeur
Client minimal pris en charge Disponible dans Windows Vista et les versions ultérieures des systèmes d’exploitation Windows.
Plateforme cible Desktop (Expérience utilisateur)
En-tête d3dumddi.h (inclure D3dumddi.h)

Voir aussi

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive