次の方法で共有


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 の場合、各三角形は独自のグラフに含まれる可能性があります。

必要条件

要件
ヘッダー
D3DX9Mesh.h
ライブラリ
D3dx9.lib

こちらもご覧ください

UVAtlas 関数

UV Atlas Command-Line ツール (uvatlas.exe)