ID3DXTextureGutterHelper::ResampleTex 方法

将纹理重新采样到此装订机的参数化中。

语法

HRESULT ResampleTex(
  [in]  LPDIRECT3DTEXTURE9 pTextureIn,
  [in]  LPD3DXMESH         pMeshIn,
  [in]  D3DDECLUSAGE       Usage,
  [in]  UINT               UsageIndex,
  [out] LPDIRECT3DTEXTURE9 pTextureOut
);

参数

pTextureIn [in]

类型: LPDIRECT3DTEXTURE9

对应于 pMeshIn 中原始参数化的纹理。 此纹理将用于创建 pTextureOut。

pMeshIn [in]

类型: LPD3DXMESH

包含原始参数化和新参数化的网格。 需要将新的参数化存储在D3DDECLUSAGE_TEXCOORD索引 0 中。

用法 [in]

类型: D3DDECLUSAGE

顶点数据使用情况 (与 UsageIndex) 结合使用,用于标识包含 pMeshIn 中原始参数化的顶点声明的组件。 请参阅 D3DDECLUSAGE

UsageIndex [in]

类型: UINT

从零开始的索引 (与 Usage) 结合使用,后者标识包含 pMeshIn 中原始参数化的顶点声明的组件。 新的参数化需要D3DDECLUSAGE_TEXCOORD和索引 0 的组合;可以使用任何其他用法/索引组合。

pTextureOut [out]

类型: LPDIRECT3DTEXTURE9

重新采样的纹理。

返回值

类型: HRESULT

如果方法成功,则返回值D3D_OK。 如果方法失败,则返回值可以是以下值之一:D3DERR_INVALIDCALL、E_OUTOFMEMORY。

备注

对于此函数,参数化是一组纹理坐标,用于将网格的三角形映射到纹理上的三角形。 新的参数化是装订线帮助程序接口中包含的纹理坐标集,原始参数化是输入网格中包含的纹理坐标集。

假定纹理坐标介于 0 和 1(含)之间,并且必须在顶点声明中将新的参数化声明为纹理坐标索引 0。 原始纹理和重新采样的纹理必须具有相同的宽度和高度。

例如,准备重新采样纹理:

  • 使用 D3DXCreateTextureFromFile 等函数) (pOriginalTex 创建下面的原始纹理接口。
  • 为) 下方的 pResampledTex 重新采样的纹理 (创建新的纹理接口。 此纹理的大小必须与装订线帮助程序纹理 (宽度和高度) 相匹配。
  • 调用 D3DXCreateTextureGutterHelper 以获取新的参数化,如下所示:
// Given:
// pMesh points to a mesh that contains the original and new texture coordinates
ID3DXTextureGutterHelper * pGutterHelper;
    
// Mesh vertex declaration
D3DVERTEXELEMENT9 decl[] = {
    {0,  0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
    {0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0},
    // contains new set of texcoords
    {0, 24, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0}, 
    // contains original set of texcoords
    {0, 32, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 1}, 
    D3DDECL_END()
};
    
// Create a gutter helper with the new parameterization
hr = D3DXCreateTextureGutterHelper(width, height, pMesh, 1, &pGutterHelper);  
    
// Resample the texture
hr = pGutterHelper->ResampleTex(pOriginalTex, pMesh, D3DDECLUSAGE_TEXCOORD, 
           1, pResampledTex); 
    
// Release the gutter helper interface when done with it

一种常见方案可能是使用 UVAtlas 创建纹理图集,然后使用 ResampleTex 将纹理重新采样到新的参数化中。 有关地图集的详细信息,请参阅 使用 UVAtlas (Direct3D 9)

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

ID3DXTextureGutterHelper

D3DXUVAtlasCreate