функция обратного вызова PFND3DDDI_SETSTREAMSOURCEFREQ (d3dumddi.h)

Функция SetStreamSourceFreq задает делитель частоты источника потока, привязанного к буферу вершин.

Синтаксис

PFND3DDDI_SETSTREAMSOURCEFREQ Pfnd3dddiSetstreamsourcefreq;

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

Параметры

hDevice

Дескриптор устройства отображения (графический контекст).

unnamedParam2

pData [in]

Указатель на структуру D3DDDIARG_SETSTREAMSOURCEFREQ , указывающую, как устанавливается разделитель частоты для источника потока.

Возвращаемое значение

SetStreamSourceFreq возвращает S_OK или соответствующий результат ошибки, если разделитель частоты для части источника потока вершин не задан.

Комментарии

Драйвер отображения пользовательского режима для устройства, поддерживающего вершинный шейдер версии 3.0 и более поздних версий, должен реализовывать деление частоты потока вершин. Для версий 2.0 и более ранних моделей вершинного шейдера (включая фиксированную функцию) вершинный шейдер вызывается один раз для каждой вершины. Для каждого вызова входные регистры вершин инициализируются с помощью уникальных элементов вершин из вершинных потоков. Однако если драйвер использует деление частоты потока вершин, можно вызвать вершинный шейдер (3.0 и более поздние версии) для инициализации применимых входных регистров с меньшей частотой.

После установки делителя частоты потока (например, для 2) драйвер должен получить данные из потока и передать эти данные в применимые входные вершины регистрируются каждые 2 вершины. Этот делитель влияет на каждый элемент в потоке.

Драйвер использует разделитель частоты для вычисления смещения вершины в буфере вершин в соответствии со следующей формулой:

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

Для каждого используемого потока вершин, если драйвер получает значение начальной вершины во время вызова функции DrawPrimitive драйвера, драйвер также делит это начальное значение вершины на делитель частоты и определяет результат в формуле. Это начальное значение вершины предоставляется в элементе VStartструктуры D3DDDIARG_DRAWPRIMITIVE . Следующая формула включает значение начальной вершины:

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

Обратите внимание, что в приведенных выше формулах используется целочисленное деление.

Драйвер игнорирует параметр делителя частоты потока либо для индексированных примитивов, либо если драйвер поддерживает только модель вершинного шейдера, которая более ранняя, чем версия 3.0 (включая фиксированную функцию).

Требования

Требование Значение
Минимальная версия клиента Доступно в Windows Vista и более поздних версиях операционных систем Windows.
Целевая платформа Персональный компьютер
Верхняя часть d3dumddi.h (включая D3dumddi.h)

См. также раздел

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive