D3DXUVAtlasCreate 関数
メッシュの UV アトラスを作成します。
構文
HRESULT D3DXUVAtlasCreate(
_In_ LPD3DXMESH pMesh,
_In_ UINT dwMaxChartNumber,
_In_ FLOAT fMaxStretch,
_In_ UINT dwWidth,
_In_ UINT dwHeight,
_In_ FLOAT fGutter,
_In_ DWORD dwTextureIndex,
_In_ const DWORD *pdwAdjacency,
const DWORD *pdwFalseEdges,
_In_ FLOAT *pfIMTArray,
_In_ LPD3DXUVATLASCB pCallback,
_In_ FLOAT fCallbackFrequency,
_In_ LPVOID pUserContext,
_In_ DWORD dwOptions,
_In_ LPD3DXMESH *ppMeshOut,
_Out_ LPD3DXBUFFER *ppFacePartitioning,
_Out_ LPD3DXBUFFER *ppVertexRemapArray,
_Out_ FLOAT *pfMaxStretchOut,
_Out_ UINT *pdwNumChartsOut
);
パラメーター
-
pMesh [in]
-
種類: LPD3DXMESH
atlas を計算するためのオブジェクト ジオメトリを含む入力メッシュへのポインター ( ID3DXMesh を参照)。 少なくとも、メッシュには位置データと 2D テクスチャ座標が含まれている必要があります。
-
dwMaxChartNumber [in]
-
型: UINT
メッシュをパーティション分割するグラフの最大数。 パーティション分割モードに関する解説を参照してください。 0 を使用して、ストレッチに基づいてアトラスをパラメーター化する必要があることを D3DX に指示します。
-
fMaxStretch [in]
-
型: FLOAT
許容されるストレッチの量。 0は延伸が許可されていないことを意味し、1は任意の量の延伸が使用できることを意味する。
-
dwWidth [in]
-
型: UINT
テクスチャの幅。
-
dwHeight [in]
-
型: UINT
テクスチャの高さ。
-
fGutter [in]
-
型: FLOAT
アトラス上の 2 つのグラフ間の最小距離 (テクセル単位)。 余白は常に幅でスケーリングされます。そのため、512 x 512 テクスチャで 2.5 の余白を使用する場合、2 つのグラフ間の最小距離は 2.5 / 512.0 テクセルです。
-
dwTextureIndex [in]
-
型: DWORD
使用するテクスチャ座標のセットを識別する 0 から始まるテクスチャ座標インデックス。
-
pdwAdjacency [in]
-
型: const DWORD*
隣接データの配列へのポインター。 面あたり 3 つの DWORD を使用して、互いに隣接する三角形を示します ( ID3DXBaseMesh::GenerateAdjacency を参照)。
-
pdwFalseEdges
-
型: const DWORD*
1 つの顔に 3 つの DWORDS を含む配列。 各面は、エッジが false かどうかを示します。 false 以外のエッジは -1 で示され、false エッジは他の値で示されます。 これにより、各クワッドの真ん中のエッジが切断されない四角形のメッシュのパラメータ化が可能になります。
-
pfIMTArray [in]
-
型: FLOAT*
三角形をストレッチする方法を説明する、統合メトリック テンソルの配列へのポインター ( 「IntegratedMetricTensor」を参照)。
-
pCallback [in]
-
種類: LPD3DXUVATLASCB
進行状況の監視に役立つコールバック関数 ( LPD3DXUVATLASCB を参照) へのポインター。
-
fCallbackFrequency [in]
-
型: FLOAT
D3DX がコールバックを呼び出す頻度を指定します。適切な既定値は 0.0001f です。
-
pUserContent [in]
-
種類: LPVOID
コールバック関数に渡されるユーザー定義値へのポインター。通常は、コールバック関数のコンテキスト情報を提供するデータ構造へのポインターを渡すためにアプリケーションによって使用されます。
-
dwOptions [in]
-
型: DWORD
生成されるグラフの品質を指定します。 D3DXUVATLAS を参照してください。
-
ppMeshOut [in]
-
種類: LPD3DXMESH*
atlas を使用して作成されたメッシュへのポインター ( 「ID3DXMesh」を参照)。
-
ppFacePartitioning [out]
-
種類: LPD3DXBUFFER*
最終的な顔パーティション分割データの配列へのポインター。 各要素には、顔ごとに 1 つの DWORD が含まれます ( 「ID3DXBuffer」を参照)。
-
ppVertexRemapArray [out]
-
種類: LPD3DXBUFFER*
再マップされた頂点の配列へのポインター。 各配列要素は、最終的な各頂点の元の頂点を識別します (再マップ中に頂点が分割された場合)。 各配列要素には、頂点ごとに 1 つの DWORD が含まれています。
-
pfMaxStretchOut [out]
-
型: FLOAT*
atlas アルゴリズムによって生成される最大ストレッチ値へのポインター。 範囲は 0.0 ~ 1.0 です。
-
pdwNumChartsOut [out]
-
型: UINT*
atlas アルゴリズムによって作成されたグラフの数へのポインター。 dwMaxChartNumber が低すぎる場合、このパラメーターは、atlas の作成に必要なグラフの最小数を返します。
戻り値
型: HRESULT
関数が成功した場合、戻り値はD3D_OK。それ以外の場合、値はD3DERR_INVALIDCALL。
解説
D3DXUVAtlasCreate では、次の 2 つの方法でメッシュ ジオメトリをパーティション分割できます。
- グラフの数に基づく
- 許容される最大ストレッチに基づく。 許容される最大ストレッチが 0 の場合、各三角形は独自のグラフに含まれる可能性があります。
必要条件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|
こちらもご覧ください