共用方式為


ID3DXTextureGutterHelper::ResampleTex 方法

將紋理重新取樣到這個 Gutterhelper 的參數化中。

語法

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

包含原始和新參數化的網格。 需要將新的參數化儲存在索引 0 D3DDECLUSAGE_TEXCOORD。

使用量 [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) (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)

規格需求

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

另請參閱

ID3DXTextureGutterHelper

D3DXUVAtlasCreate