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 函数期间收到起始顶点值,则驱动程序还会将此起始顶点值除以频率除数并在公式中对结果进行系数。 此起始顶点值在 D3DDDIARG_DRAWPRIMITIVE 结构的 VStart 成员中提供。 以下公式包含起始顶点值:

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

请注意,上述公式使用整数除法。

对于索引基元,或者驱动程序仅支持早于版本 3.0 的顶点着色器模型 (包括固定函数) ,驱动程序将忽略流的频率除数的设置。

要求

要求
最低受支持的客户端 在 Windows Vista 和更高版本的 Windows 操作系统中可用。
目标平台 桌面
标头 d3dumddi.h (包括 D3dumddi.h)

另请参阅

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive