Platform SDK: DirectX |
Direct3D 直接モードのアプリケーションでは、複数の方法でモデルの頂点を定義できる。柔軟な頂点定義 ("柔軟な頂点フォーマット" とも呼ぶ) がサポートされていることから、必要な頂点成分のみアプリケーションで使用し、使用しない頂点成分は削除できる。必要な頂点成分のみ使用できるので、アプリケーションでメモリを節約でき、モデルのレンダリングに必要な処理帯域幅を最小限に抑えることができる。柔軟な頂点フォーマット フラグを組み合わせて使用して、頂点のフォーマット方法を指定する。
C++ アプリケーションでは、IDirect3DDevice7 インターフェイスのレンダリング メソッドにより、これらのフラグの組み合わせを受け取るメソッドを使用でき、その組み合わせを使用してプリミティブのレンダリング方法を決める。基本的には、これらのフラグは、アプリケーションでどの頂点成分 (位置座標、頂点ブレンディング ウェイト (重み)、法線、色、およびテクスチャ座標の数とフォーマット) を使用するかをシステムに知らせ、また、Direct3D でレンダリング パイプラインのどの部分を頂点成分に適用するかを間接的に知らせる。さらに、特定の頂点フォーマット フラグの有無によって、メモリに存在する頂点成分フィールドと、省略した頂点成分をシステムに知らせる。
デバイスの制限を調べるには、D3DFVFCAPS_DONOTSTRIPELEMENTS および D3DFVFCAPS_TEXCOORDCOUNTMASK 柔軟な頂点フォーマット フラグについてデバイスを問い合わせる。詳細については、「D3DDEVICEDESC7 構造体の dwFVFCaps メンバ」を参照すること。
注 : アプリケーションでIDirect3DDevice7::DrawPrimitiveStrided または IDirect3DDevice7::DrawIndexedPrimitiveStrided メソッドを使用する場合は、これは少し異なる。詳細については、「ストライド頂点フォーマット」を参照すること。
頂点のフォーマット方法に関するシステム条件の中で重要なのは、データの表示順序である。次の図は、メモリ内のすべての頂点成分の順序とそれに関係するデータ型を示す。
注 : DirectX 7.0 では、テクスチャ座標はさまざまな方法で宣言でき、最少 1 要素の座標、最大 3 要素のテクスチャ座標 (2D 射影テクスチャ座標の場合) を使用してテクスチャを処理できる。詳細については、「テクスチャ座標フォーマット」を参照すること。マクロの D3DFVF_TEXCOORDSIZEn セットを使用して、頂点フォーマットで使用するテクスチャ座標フォーマットを識別するためのビット パターンを作成する。
実際のアプリケーションで、すべての単一コンポーネントを使用するとは限らない。RHW (同次 W の逆数) と頂点法線フィールドは互いに排他的である。また、ほとんどのアプリケーションで 8 つのテクスチャ座標セットをすべて使用するとも限らない。しかし、それでも柔軟性はある。あるフラグを別のフラグと併用する場合には、いくつかの制限がある。これらの制限はほとんど常識で判断できる。たとえば、D3DFVF_XYZ フラグと D3DFVF_XYZRHW フラグは併用できない。この場合、未トランスフォームの頂点とトランスフォームされた頂点の両方を使用して、1 つの頂点の位置座標を定義することになるからである。詳細については「柔軟な頂点フォーマット フラグ」の各フラグの説明を参照すること。
Visual Basic の Direct3DDevice7 クラスには、これらのフラグを組み合わせを受け取るメソッドがあり、この組み合わせを使用してプリミティブのレンダリング方法を決める。基本的には、これらのフラグは、アプリケーションでどの頂点成分 (位置座標、頂点ブレンディング ウェイト (重み)、法線、色、およびテクスチャ座標の数とフォーマット) を使用するかをシステムに知らせ、また、Direct3D でレンダリング パイプラインのどの部分を頂点成分に適用するかを間接的に知らせる。さらに、特定の頂点フォーマット フラグの有無によって、メモリに存在する頂点成分フィールドと、省略した頂点成分をシステムに知らせる。
デバイスの制限を調べるには、D3DFVFCAPS_DONOTSTRIPELEMENTS および D3DFVFCAPS_TEXCOORDCOUNTMASK 柔軟な頂点フォーマット フラグについてデバイスを問い合わせる。詳細については、「D3DDEVICEDESC7 型の lFVFCaps メンバ」を参照すること。
頂点のフォーマット方法に関するシステム条件の中で重要なのは、データの表示順序である。次の図は、メモリ内のすべての頂点成分の順序とそれに関係するデータ型を示す。
テクスチャ座標はさまざまなフォーマットで宣言でき、最少 1 要素の座標、最大 3 要素のテクスチャ座標 (2D 射影テクスチャ座標の場合) を使用してテクスチャを処理できる。Math.bas からヘルパー関数の D3DFVF_TEXCOORDSIZEn セットを使用して、頂点フォーマットで使用するテクスチャ座標フォーマットを識別するためのビット パターンを作成する。Math.bas の Visual Basic コード モジュールが、この SDK に付属している。
実際のアプリケーションで、すべての単一コンポーネントを使用するとは限らない。RHW (同次 W の逆数) と頂点法線フィールドは互いに排他的である。また、ほとんどのアプリケーションで 8 つのテクスチャ座標セットをすべて使用するとも限らない。しかし、それでも柔軟性はある。あるフラグを別のフラグと併用する場合には、いくつかの制限がある。これらの制限はほとんど常識で判断できる。たとえば、D3DFVF_XYZ フラグと D3DFVF_XYZRHW フラグは併用できない。この場合、未トランスフォームの頂点とトランスフォーム済みの頂点の両方を使用して、1 つの頂点の位置座標を定義することになるからである。詳細については「柔軟な頂点フォーマット フラグ」の各フラグの説明を参照すること。