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 を含む) |
関連項目
DrawPrimitive の