次の方法で共有


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 に設定した後、ドライバーはストリームからデータをフェッチし、2 つの頂点ごとに該当する入力頂点レジスタにこのデータを渡す必要があります。 この除数は、ストリーム内の各要素に影響します。

ドライバーは、周波数除数を使用して、次の数式に従って頂点バッファーへの頂点オフセットを計算します。

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

使用される各頂点ストリームについて、ドライバーがドライバーの DrawPrimitive 関数の呼び出し中に開始頂点値を受け取った場合、ドライバーは、この開始頂点の値を周波数除数で除算し、数式の結果を考慮します。 この開始頂点の値は、D3DDDIARG_DRAWPRIMITIVE構造体の VStart メンバーで提供されます。 次の数式には、開始頂点の値が含まれています。

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

上記の数式では整数除算が使用されることに注意してください。

ドライバーは、インデックス付きプリミティブの場合、またはドライバーがバージョン 3.0 より前の頂点シェーダー モデル (固定関数を含む) のみをサポートしている場合、ストリームの頻度除数の設定を無視します。

要件

要件
サポートされている最小のクライアント Windows Vista 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

D3DDDIARG_DRAWPRIMITIVE

D3DDDIARG_SETSTREAMSOURCEFREQ

D3DDDI_DEVICEFUNCS

DrawPrimitive