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