D3DXUVAtlasPartition 函数

为网格创建 UV 图集。

语法

HRESULT D3DXUVAtlasPartition(
  _In_        LPD3DXMESH      pMesh,
  _In_        UINT            dwMaxChartNumber,
  _In_        FLOAT           fMaxStretch,
  _In_        DWORD           dwTextureIndex,
  _In_  const DWORD           *pdwAdjacency,
        const DWORD           *pdwFalseEdges,
  _In_        FLOAT           *pfIMTArray,
  _In_        LPD3DXUVATLASCB pCallback,
  _In_        FLOAT           fCallbackFrequency,
  _In_        LPVOID          pUserContent,
  _In_        DWORD           dwOptions,
  _In_        LPD3DXMESH      *ppMeshOut,
  _Out_       LPD3DXBUFFER    pFacePartitioning,
  _Out_       LPD3DXBUFFER    *ppVertexRemapArray,
              LPD3DXBUFFER    *ppPartitionResultAdjacency,
  _Out_       FLOAT           *pfMaxStretchOut,
  _Out_       UINT            *pdwNumChartsOut
);

参数

pMesh [in]

类型: LPD3DXMESH

指向输入网格的指针 (请参阅 ID3DXMesh) ,其中包含用于计算地图集的对象几何图形。 网格必须至少包含位置数据和 2D 纹理坐标。

dwMaxChartNumber [in]

类型: UINT

要将网格分区到的最大图表数。 请参阅有关分区模式的备注。 使用 0 告知 D3DX 应根据拉伸参数化地图集。

fMaxStretch [in]

类型: FLOAT

允许的拉伸量。 0 表示不允许拉伸,1 表示可以使用任意数量的拉伸。

dwTextureIndex [in]

类型: DWORD

从零开始的纹理坐标索引,用于标识要使用的纹理坐标集。

pdwAdjacency [in]

类型: const DWORD*

指向每个面有 3 个 DWORD 的相邻数据数组的指针,指示哪些三角形彼此相邻 (请参阅 ID3DXBaseMesh::GenerateAdjacency) 。

pdwFalseEdges

类型: const DWORD*

每个面有 3 个 DWORDS 的数组。 每个人脸指示边缘是否为 false。 非假边由 -1 指示,假边由任何其他值指示。 这样就可以对四边形网格进行参数化,在该网格中,不会剪切每个象限中间的边缘。

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) 。

pFacePartitioning [out]

类型: LPD3DXBUFFER

指向最终人脸分区数据数组的指针。 每个元素包含一个 DWORD, (请参阅 ID3DXBuffer) 。

ppVertexRemapArray [out]

类型: LPD3DXBUFFER*

指向重新映射顶点数组的指针。 如果顶点在重新映射) 期间被拆分,则每个数组元素标识来自 (每个最终顶点的原始顶点。 每个数组元素每个顶点包含一个 DWORD。

ppPartitionResultAdjacency

类型: LPD3DXBUFFER*

指向 ID3DXBuffer 接口的指针的地址。 此缓冲区将包含每个面三个 DWORD 的数组,该数组为输出网格中的每个人脸指定三个邻居。 此参数不得为 NULL,因为对 D3DXUVAtlasPack () 的后续调用需要它。

pfMaxStretchOut [out]

类型: FLOAT*

指向 atlas 算法生成的最大拉伸值的指针。 范围介于 0.0 和 1.0 之间。

pdwNumChartsOut [out]

类型: UINT*

指向 atlas 算法创建的图表数的指针。 如果 dwMaxChartNumber 太低,此参数将返回创建地图集所需的最小图表数。

返回值

类型: HRESULT

如果函数成功,则返回值D3D_OK;否则,该值为D3DERR_INVALIDCALL。

备注

D3DXUVAtlasPartition 类似于 D3DXUVAtlasCreate,只不过 D3DXUVAtlasPartition 不执行最终打包步骤。

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

UVAtlas 函数

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