共用方式為


D3DXUVAtlasCreate 函式

建立網格的 UV atlas。

語法

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

輸入網格的指標 (請參閱 ID3DXMesh) ,其中包含用來計算 atlas 的物件幾何。 網格至少必須包含位置資料和 2D 紋理座標。

dwMaxChartNumber [in]

類型: UINT

要分割網格的圖表數目上限。 請參閱有關資料分割模式的備註。 使用 0 來告訴 D3DX 應該根據延展將 atlas 參數化。

fMaxStretch [in]

類型: FLOAT

允許的延展量。 0 表示不允許延展,1 表示可以使用任意數量的延展。

dwWidth [in]

類型: UINT

紋理寬度。

dwHeight [in]

類型: UINT

紋理高度。

fGutter [in]

類型: FLOAT

地圖上兩個圖表之間的最小距離,以紋素為單位。 裝訂邊一律會依寬度縮放;因此,如果在 512x512 紋理上使用 2.5 的裝訂邊,則兩個圖表之間的最小距離是 2.5 / 512.0 紋素。

dwTextureIndex [in]

類型: DWORD

以零起始的紋理座標索引,可識別要使用的紋理座標集。

pdwAdjacency [in]

類型:const DWORD*

相鄰資料陣列的指標。 每個臉部有 3 個 DWORD,表示哪些三角形彼此相鄰, (請參閱 ID3DXBaseMesh::GenerateAdjacency) 。

pdwFalseEdges

類型:const DWORD*

每個臉部 3 個 DWORDS 的陣列。 每個臉部都會指出邊緣是否為 false。 非 false 邊緣以 -1 表示,false 邊緣會以任何其他值表示。 這會啟用四邊形網格的參數化,其中每個四邊的中間邊緣將不會剪下。

pfIMTArray [in]

類型: FLOAT*

整合式計量張量陣列的指標,描述如何延展三角形 (請參閱 IntegratedMetricTensor) 。

pCallback [in]

類型: LPD3DXU加值稅LASCB

回呼函式的指標 (請參閱適用于監視進度的 LPD3DXU加值稅LASCB) 。

fCallbackFrequency [in]

類型: FLOAT

指定 D3DX 呼叫回呼的頻率;合理的預設值為 0.0001f。

pUserContent [in]

類型: LPVOID

傳遞至回呼函式之使用者定義值的指標;通常由應用程式用來傳遞資料結構的指標,以提供回呼函式的內容資訊。

dwOptions [in]

類型: DWORD

指定產生的圖表品質。 請參閱 D3DXU加值稅LAS

ppMeshOut [in]

類型: LPD3DXMESH*

使用 atlas (建立網格的指標,請參閱 ID3DXMesh) 。

ppFacePartitioning [out]

類型: LPD3DXBUFFER*

最終臉部分割資料的陣列指標。 每個元素每個臉部都包含一個 DWORD (請參閱 ID3DXBuffer) 。

ppVertexRemapArray [out]

類型: LPD3DXBUFFER*

重新對應頂點陣列的指標。 如果頂點在重新對應) 期間分割,則每個陣列元素會識別每個最終頂點都來自 (的原始頂點。 每個陣列元素在每個頂點都包含一個 DWORD。

pfMaxStretchOut [out]

類型: FLOAT*

atlas 演算法所產生之最大延展值的指標。 範圍介於 0.0 和 1.0 之間。

pdwNumChartsOut [out]

類型: UINT*

atlas 演算法所建立圖表數目的指標。 如果 dwMaxChartNumber 太低,此參數會傳回建立 atlas 所需的最小圖表數目。

傳回值

類型: HRESULT

如果函式成功,則傳回值會D3D_OK;否則,此值會D3DERR_INVALIDCALL。

備註

D3DXUVAtlasCreate 可以分割網格幾何兩種方式:

  • 根據圖表數目
  • 根據允許的延展上限。 如果允許的延展上限為 0,則每個三角形可能位於自己的圖表中。

規格需求

需求
標頭
D3DX9Mesh.h
程式庫
D3dx9.lib

另請參閱

UVAtlas 函式

UV Atlas Command-Line 工具 (uvatlas.exe)