PFND3DDDI_SETSTREAMSOURCEFREQ Rückruffunktion (d3dumddi.h)
Die SetStreamSourceFreq--Funktion legt den Frequenzteiler einer Datenstromquelle fest, die an einen Vertexpuffer gebunden ist.
Syntax
PFND3DDDI_SETSTREAMSOURCEFREQ Pfnd3dddiSetstreamsourcefreq;
HRESULT Pfnd3dddiSetstreamsourcefreq(
HANDLE hDevice,
const D3DDDIARG_SETSTREAMSOURCEFREQ *unnamedParam2
)
{...}
Parameter
hDevice
Ein Handle für das Anzeigegerät (Grafikkontext).
unnamedParam2
pData- [in]
Ein Zeiger auf eine D3DDDIARG_SETSTREAMSOURCEFREQ Struktur, die angibt, wie der Frequenzteiler für die Datenstromquelle festgelegt wird.
Rückgabewert
SetStreamSourceFreq- gibt S_OK oder ein entsprechendes Fehlerergebnis zurück, wenn der Frequenzteiler für den Teil der Vertexdatenstromquelle nicht erfolgreich festgelegt wurde.
Bemerkungen
Ein Anzeigetreiber für den Benutzermodus für ein Gerät, das Vertex-Shader, Version 3.0 und höher unterstützt, muss die Vertexstromfrequenzteilung implementieren. Für Version 2.0 und frühere Modelle des Vertex-Shaders (einschließlich fester Funktion) wird der Vertex-Shader einmal für jeden Vertex aufgerufen. Für jeden Aufruf werden die Eingabevertexregister mit eindeutigen Vertexelementen aus den Vertexdatenströmen initialisiert. Wenn der Treiber jedoch die Vertexstromfrequenzteilung verwendet, kann der Vertex-Shader (3,0 und höher) aufgerufen werden, um anwendbare Eingaberegister mit einer weniger häufigen Rate zu initialisieren.
Nachdem der Frequenzteiler des Datenstroms festgelegt wurde – z. B. auf 2 – muss der Treiber Daten aus dem Datenstrom abrufen und diese Daten an anwendbare Eingabevertex-Register alle 2 Scheitelpunkte übergeben. Dieser Divisor wirkt sich auf jedes Element im Datenstrom aus.
Der Treiber verwendet den Frequenzteiler, um den Vertexoffset gemäß der folgenden Formel in den Vertexpuffer zu berechnen:
VertexOffset = ((VertexIndex / Divider) * StreamStride) + StreamOffset
Wenn der Treiber bei jedem verwendeten Vertexdatenstrom während eines Aufrufs der DrawPrimitive--Funktion des Treibers einen Start-Vertex-Wert empfängt, dividiert der Treiber diesen Start-Vertex-Wert auch durch den Frequenzteiler und Faktoren, die das Ergebnis in der Formel enthalten. Dieser Start-Vertex-Wert wird im VStart- Member der D3DDDIARG_DRAWPRIMITIVE-Struktur bereitgestellt. Die folgende Formel enthält den Start-Vertex-Wert:
VertexOffset = (StartVertex / Divider) +
((VertexIndex / Divider) * StreamStride) + StreamOffset
Beachten Sie, dass die vorherigen Formeln eine ganzzahlige Division verwenden.
Der Treiber ignoriert die Einstellung des Frequenzteilers eines Datenstroms entweder für indizierte Grundtypen oder wenn der Treiber nur ein Vertex-Shadermodell unterstützt, das vor Version 3.0 (einschließlich fester Funktion) liegt.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme. |
Zielplattform- | Desktop |
Header- | d3dumddi.h (include D3dumddi.h) |