次の方法で共有


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 以前の頂点シェーダー モデル (固定関数を含む) の場合、頂点シェーダーは頂点ごとに 1 回呼び出されます。 呼び出しごとに、入力頂点レジスタは頂点ストリームの一意の頂点要素で初期化されます。 ただし、ドライバーが頂点ストリームの周波数除算を使用する場合は、頂点シェーダー (3.0 以降) を呼び出して、該当する入力レジスタを頻度の低いレートで初期化できます。

たとえば、ストリームの周波数除数が設定された後、ドライバーはストリームからデータをフェッチし、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