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