次の方法で共有


D3DRECTPATCH_INFO

高次パッチの矩形を記述します。

typedef struct D3DRECTPATCH_INFO {
    UINT StartVertexOffsetWidth;
    UINT StartVertexOffsetHeight;
    UINT Width;
    UINT Height;
    UINT Stride;
    D3DBASISTYPE Basis;
    D3DDEGREETYPE Degree;
} D3DRECTPATCH_INFO, *LPD3DRECTPATCH_INFO;

メンバ

  • StartVertexOffsetWidth
    頂点の数で表した、開始頂点オフセットの幅です。

  • StartVertexOffsetHeight
    頂点の数で表した、開始頂点オフセットの高さです。

  • Width
    頂点の数で表した、各頂点の幅です。

  • Height
    頂点の数で表した、各頂点の高さです。

  • Stride
    仮想的な 2 次元の頂点配列の幅で、頂点バッファーと同じ空間を占めます。例については、下の図を参照してください。

  • Basis
    矩形の高次パッチの基本タイプを定義する D3DBASISTYPE 列挙型のメンバーです。

    サポートされる次数 幅と高さ
    D3DBASIS_BEZIER 1 次、3 次、および 5 次 幅 = 高さ = (DWORD)order + 1
    D3DBASIS_BSPLINE 1 次、3 次、および 5 次 幅 = 高さ > (DWORD)order
    D3DBASIS_INTERPOLATE 3 次 幅 = 高さ > (DWORD)order
  • Degree
    D3DDEGREETYPE 列挙型のメンバーで、矩形パッチの次数を定義します。

解説 

次の図は、矩形パッチを指定するパラメーターを表したものです。

Rectangular high-order patch with parameters that specify it

頂点バッファーの各頂点を黒い点で示しています。この場合、頂点バッファーには頂点が 20 個あり、そのうちの 16 個は矩形パッチの中にあります。ストライドは頂点バッファーの幅に含まれる頂点の数で、ここでは 5 です。最初の頂点への x オフセットは StartIndexVertexWidth と呼ばれ、ここでは 1 です。最初のパッチ頂点への y オフセットは StartIndexVertexHeight と呼ばれ、ここでは 0 です。

個々の矩形パッチの (寄せ集めではない) ストリームをレンダリングするには、ジオメトリを細く長い (1 x N) 矩形パッチとして扱う必要があります。たとえば、ストリップ (キューブ ベジエ) の D3DRECTPATCH_INFO 構造体は、次のように設定します。

     D3DRECTPATCH_INFO RectInfo;  RectInfo.Width = 4; RectInfo.Height = 4; RectInfo.Stride = 4; RectInfo.Basis = D3DBASIS_BEZIER; RectInfo.Order = D3DORDER_CUBIC; RectInfo.StartVertexOffsetWidth = 0; RectInfo.StartVertexOffsetHeight = 4*i;  // The variable i is the index of the  //   patch you want to render. 

要件

ヘッダー: D3D9Types.h 宣言

関連項目

IDirect3DDevice9::DrawRectPatch, D3DXTessellateRectPatch