ID3DXTextureGutterHelper::ResampleTex 方法
將紋理重新取樣到這個 Gutterhelper 的參數化中。
語法
HRESULT ResampleTex(
[in] LPDIRECT3DTEXTURE9 pTextureIn,
[in] LPD3DXMESH pMeshIn,
[in] D3DDECLUSAGE Usage,
[in] UINT UsageIndex,
[out] LPDIRECT3DTEXTURE9 pTextureOut
);
參數
-
pTextureIn [in]
-
對應至 pMeshIn 中原始參數化的紋理。 此紋理將用來建立 pTextureOut。
-
pMeshIn [in]
-
類型: LPD3DXMESH
包含原始和新參數化的網格。 需要將新的參數化儲存在索引 0 D3DDECLUSAGE_TEXCOORD。
-
使用量 [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) (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 來建立紋理 atlas,然後使用 ResampleTex 將紋理重新取樣到新的參數化。 如需 atlases 的詳細資訊,請參閱 使用 UVAtlas (Direct3D 9) 。
規格需求
需求 | 值 |
---|---|
標頭 |
|
程式庫 |
|
另請參閱