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 を含む) |