ID3DXTextureGutterHelper::ResampleTex 方法
将纹理重新采样到此装订机的参数化中。
语法
HRESULT ResampleTex(
[in] LPDIRECT3DTEXTURE9 pTextureIn,
[in] LPD3DXMESH pMeshIn,
[in] D3DDECLUSAGE Usage,
[in] UINT UsageIndex,
[out] LPDIRECT3DTEXTURE9 pTextureOut
);
参数
-
pTextureIn [in]
-
对应于 pMeshIn 中原始参数化的纹理。 此纹理将用于创建 pTextureOut。
-
pMeshIn [in]
-
类型: LPD3DXMESH
包含原始参数化和新参数化的网格。 需要将新的参数化存储在D3DDECLUSAGE_TEXCOORD索引 0 中。
-
用法 [in]
-
类型: D3DDECLUSAGE
顶点数据使用情况 (与 UsageIndex) 结合使用,用于标识包含 pMeshIn 中原始参数化的顶点声明的组件。 请参阅 D3DDECLUSAGE。
-
UsageIndex [in]
-
类型: UINT
从零开始的索引 (与 Usage) 结合使用,后者标识包含 pMeshIn 中原始参数化的顶点声明的组件。 新的参数化需要D3DDECLUSAGE_TEXCOORD和索引 0 的组合;可以使用任何其他用法/索引组合。
-
pTextureOut [out]
-
重新采样的纹理。
返回值
类型: 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) 。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅