Microsoft DirectX 8.0 (Visual Basic)

固定機能による頂点処理について

固定機能頂点パイプラインでは、頂点バッファでの頂点処理は、デバイスの現在のトランスフォーム行列に適用でき、オプションで、ライティング、クリップ フラグの生成、および範囲の更新などの頂点処理も適用できる。固定機能による頂点処理を使用する場合、転送先頂点バッファの要素の修正処理は D3DPV_DONOTCOPYDATA フラグによって制御される。このフラグは、固定機能による頂点処理のみに適用できる。Direct3DDevice8 クラスは、頂点処理用の Direct3DDevice8.ProcessVertices メソッドを公開する。頂点シェーダの頂点を入力データ ストリーム セットに処理し、ProcessVertices メソッドを呼び出して 1 つのインターリーブされた頂点データのストリームを生成する。このメソッドは、メソッドがターゲットとする頂点の位置と量、転送先頂点バッファ、および処理オプションを記述する 5 つのパラメータを受け取る。呼び出し後、処理された頂点データは転送先バッファに格納される。

第1 パラメータ SrcStartIndex、第 2 パラメータ DestIndex、第 3 パラメータ VertexCount は、それぞれ、最初にロードされる頂点のインデックス、頂点が配置される転送先頂点バッファのインデックス、処理して転送先バッファに配置する頂点の総数を示す。第 4 パラメータ DestBuffer は、転送元頂点を受け取る頂点バッファ オブジェクトの Direct3DVertexBuffer8 に設定する。SrcStartIndex は、メソッドが頂点の処理を開始するインデックスを指定する。

最後のパラメータ Flags は、メソッドの特殊な処理オプションを指定する。このパラメータを 0 に設定すると、デフォルトの頂点処理が実行され、D3DPV_DONOTCOPYDATA を設定すると、何らかの状況において処理が最適化される。Flags を 0 に設定したときは、頂点処理の影響を受けない転送先頂点バッファの頂点フォーマットの頂点の成分は、頂点シェーダからコピーするか、0 に設定される。ただし、D3DPV_DONOTCOPYDATA を使用すると、Microsoft® Direct3D® によって色および座標情報が生成されない限り、ProcessVertices によって色および座標情報は上書きされない。ライティングが有効、つまり D3DRS_LIGHTING が TRUE のときは、ディフューズ色が生成される。ライティングが有効でスペキュラが有効、つまり D3DRS_SPECULARENABLE および D3DRS_LIGHTING が TRUE のときは、スペキュラ色が生成される。スペキュラ色は、フォグが有効のときも生成される。テクスチャ座標は、テクスチャ トランスフォームまたはテクスチャ生成が有効のときに生成される。ProcessVertices は、現在のレンダリング ステートを使用して、実行する頂点処理を決定する。

デバイスによる頂点処理の制限を判定するには、D3DCAPS8 構造体の VertexProcessingCaps メンバに、サポートする頂点処理能力を問い合わせる。