Freigeben über


PFND3DDDI_SETSTREAMSOURCEFREQ Rückruffunktion (d3dumddi.h)

Die SetStreamSourceFreq-Funktion legt den Häufigkeitsteiler einer Streamquelle 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 Häufigkeitsteiler für die Streamquelle festgelegt wird.

Rückgabewert

SetStreamSourceFreq gibt S_OK oder ein entsprechendes Fehlerergebnis zurück, wenn der Häufigkeitsteiler für den Teil der Vertexstreamquelle nicht erfolgreich festgelegt wurde.

Hinweise

Ein Benutzermodusanzeigetreiber für ein Gerät, das Vertex-Shader version 3.0 und höher unterstützt, muss die Vertexstreamfrequenzteilung implementieren. Bei Modellen der Version 2.0 und früher von Vertex-Shadern (einschließlich fester Funktion) wird der Vertex-Shader für jeden Scheitelpunkt einmal aufgerufen. Für jeden Aufruf werden die Eingabevertexregister mit eindeutigen Vertexelementen aus den Vertexstreams initialisiert. Wenn der Treiber jedoch vertex stream frequency division verwendet, kann der Vertex-Shader (3.0 und höher) aufgerufen werden, um anwendbare Eingaberegister weniger häufig zu initialisieren.

Nachdem der Frequenzteiler des Datenstroms festgelegt wurde - z. B. auf 2 -, muss der Treiber Daten aus dem Stream abrufen und diese Daten alle 2 Scheitelpunkte an die entsprechenden Eingabevertexregister übergeben. Dieser Divisor wirkt sich auf jedes Element im Stream aus.

Der Treiber verwendet den Frequenzteiler, um den Vertexoffset in den Vertexpuffer gemäß der folgenden Formel zu berechnen:

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

Wenn der Treiber für jeden verwendeten Scheitelpunkt 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 Häufigkeitsteiler und berücksichtigt das Ergebnis in der Formel. Dieser Start-Vertex-Wert wird im VStart-Member der D3DDDIARG_DRAWPRIMITIVE-Struktur bereitgestellt. Die folgende Formel enthält den Wert start-vertex:

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

Beachten Sie, dass die vorherigen Formeln 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
Unterstützte Mindestversion (Client) Verfügbar in Windows Vista und höheren Versionen der Windows-Betriebssysteme.
Zielplattform Desktop
Kopfzeile d3dumddi.h (include D3dumddi.h)

Weitere Informationen

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive