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 列挙型のメンバーで、矩形パッチの次数を定義します。
解説
次の図は、矩形パッチを指定するパラメーターを表したものです。
頂点バッファーの各頂点を黒い点で示しています。この場合、頂点バッファーには頂点が 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 宣言