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 函式期間收到開始頂點值,驅動程式也會將此開始頂點值除以頻率除數,並將公式中的結果因數除以。 這個 start-vertex 值是在 D3DDDIARG_DRAWPRIMITIVE 結構的 VStart 成員中提供。 下列公式包含 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