Поделиться через


функция обратного вызова 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 (include D3dumddi.h)

См. также

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive