Microsoft DirectX 8.0 (Visual Basic) |
柔軟な頂点フォーマット (FVF) コードで指定された頂点データは、トランスフォーム済みまたは未トランスフォームのいずれかのプロパティを持つ。FVF 指定のトランスフォーム済み頂点は、TL (transformed and lit) 頂点と呼ばれる。Microsoft® Direct3D® for Microsoft DirectX® 8.0 では、前リリースと同様、TL 頂点データがサポートされている。しかし、TL 頂点は、未トランスフォームの頂点には適用されないいくつかの条件に影響される。
TL 頂点データは、FVF コードで指定された頂点に対してのみ有効であり、プログラム可能な頂点シェーダの入力としては使用できない。プログラム可能な頂点シェーダは、各種フォームのトランスフォーム済み頂点データを使用できる柔軟性があるが、変換はシェーダの一部であって頂点データのプロパティではないため、FVF の TL 頂点データとは異なっている。TL 頂点データは、FVF コードによって定義されているため、継承的に単一ストリームでもある。
TL 頂点データが Direct3D でクリッピングされるかどうかは保証がないため、TL 頂点プリミティブを Direct3D に送ってレンダリングするには、事前にクリッピングする必要がある。x 値と y 値は、ビューポートに対して、またはデバイス ガードバンドがあればそれに対して、クリッピングする必要がある。TL 頂点の z 値は、0 と 1 の間でなければならない (0 と 1 を含む)。また RHW 値は、[0 < 1/D3DCAPS8.MaxVertexW] の範囲内でなければならない。RHW 要件は、w 値がハードウェア ラスタ化デバイスのサポート範囲内に収まるようにすることである。頂点の w および RHW 範囲がパースペクティブ射影トランスフォームの結果である場合、射影行列のすべての値にスケールを適用して修正できる。
注 D3DPMISCCAPS_CLIPTLVERTS が設定されている場合、デバイスはトランスフォーム後の頂点データを z および (x, y) ビューポートの限界に対してクリッピングする。ユーザー定義のクリップ面に対するクリッピングは、トランスフォーム後の頂点データについてはサポートされていない。D3DPMISCCAPS_CLIPTLVERTS 能力が設定されていない場合、アプリケーションがこれらのプリミティブを z 境界と少なくとも x と y のガードバンドの範囲に対してクリッピングする必要がある。一方、トランスフォーム前の頂点についてのクリッピングは、続けて別の描画呼び出しが行われるような、転送先頂点バッファに対する描画呼び出しと頂点処理呼び出しの両方で十分にサポートされている。このサポートには、z と (x, y) ビューポート限界に加えてユーザー定義のクリップ面も含まれる。
TL 頂点データは、常に、ドライバに直接渡されてレンダリングされる。TL 頂点データを持つ頂点バッファを使用すると、ドライバがこれらの頂点バッファを AGP またはビデオ メモリに割り当てる処理速度がかなり向上する。TL 頂点バッファの割り当ては、非 TL 頂点データ (FVF または非 FVF のいずれか) がドライバによって割り当てられない場合でも、ドライバによって割り当てることができる。これは、トランスフォームおよびライティングをサポートしないハードウェア デバイス上で動作する場合と同様である。
詳細については、「トランスフォーム済み ライティング済みの頂点」を参照すること。