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) |