PFND3DDDI_SETSTREAMSOURCEFREQ función de devolución de llamada (d3dumddi.h)

La función SetStreamSourceFreq establece el divisor de frecuencia de un origen de flujo enlazado a un búfer de vértices.

Sintaxis

PFND3DDDI_SETSTREAMSOURCEFREQ Pfnd3dddiSetstreamsourcefreq;

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

Parámetros

hDevice

Identificador del dispositivo de visualización (contexto de gráficos).

unnamedParam2

pData [in]

Puntero a una estructura de D3DDDIARG_SETSTREAMSOURCEFREQ que especifica cómo se establece el divisor de frecuencia para el origen de flujo.

Valor devuelto

SetStreamSourceFreq devuelve S_OK o un resultado de error adecuado si el divisor de frecuencia de la parte del origen del flujo de vértices no se ha establecido correctamente.

Comentarios

Un controlador de pantalla en modo de usuario para un dispositivo que admita la versión 3.0 del sombreador de vértices y versiones posteriores debe implementar la división de frecuencia de flujo de vértices. Para la versión 2.0 y los modelos anteriores del sombreador de vértices (incluida la función fija), se llama al sombreador de vértices una vez para cada vértice. Para cada llamada, los registros de vértices de entrada se inicializan con elementos de vértice únicos de los flujos de vértices. Sin embargo, si el controlador usa la división de frecuencia de flujo de vértices, se puede llamar al sombreador de vértices (3.0 y versiones posteriores) para inicializar los registros de entrada aplicables a una velocidad menos frecuente.

Después de establecer el divisor de frecuencia de la secuencia, por ejemplo, en 2, el controlador debe capturar datos de la secuencia y pasar estos datos a los registros de vértices de entrada aplicables cada 2 vértices. Este divisor afecta a cada elemento de la secuencia.

El controlador usa el divisor de frecuencia para calcular el desplazamiento del vértice en el búfer de vértices según la fórmula siguiente:

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

Para cada flujo de vértice que se usa, si el controlador recibe un valor de inicio de vértice durante una llamada a la función DrawPrimitive del controlador, el controlador también divide este valor de vértice inicial por el divisor de frecuencia y factores el resultado en la fórmula. Este valor de vértice inicial se proporciona en el miembro VStart de la estructura D3DDDIARG_DRAWPRIMITIVE . La fórmula siguiente incluye el valor start-vértice:

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

Tenga en cuenta que las fórmulas anteriores usan la división de enteros.

El controlador omite la configuración del divisor de frecuencia de una secuencia para primitivos indexados o si el controlador solo admite un modelo de sombreador de vértices anterior a la versión 3.0 (incluida la función fija).

Requisitos

Requisito Value
Cliente mínimo compatible Disponible en Windows Vista y versiones posteriores de los sistemas operativos Windows.
Plataforma de destino Escritorio
Encabezado d3dumddi.h (incluya D3dumddi.h)

Consulte también

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive