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 函数时收到起始顶点值,驱动程序还会将此起始顶点值除以频率除数,并将公式中的结果因素除以此起始顶点值。 此起始顶点值在 VStartD3DDDIARG_DRAWPRIMITIVE 结构的成员中提供。 以下公式包括 start-vertex 值:

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

请注意,前面的公式使用整数除法。

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

要求

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

另请参阅

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive