ID3DXTextureGutterHelper::ResampleTex-Methode

Ändert eine Textur in die Parametrisierung dieses Gutterhelpers.

Syntax

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

Parameter

pTextureIn [in]

Typ: LPDIRECT3DTEXTURE9

Textur, die der ursprünglichen Parametrisierung in pMeshIn entspricht. Diese Textur wird verwendet, um pTextureOut zu erstellen.

pMeshIn [in]

Typ: LPD3DXMESH

Mesh mit den ursprünglichen und neuen Parametrisierungen. Sie ist erforderlich, um die neue Parametrisierung in D3DDECLUSAGE_TEXCOORD Index 0 zu speichern.

Verwendung [in]

Typ: D3DDECLUSAGE

Vertexdatenverwendung (in Kombination mit UsageIndex), die die Komponente der Vertexdeklaration identifiziert, die die ursprüngliche Parametrisierung in pMeshIn enthält. Siehe D3DDECLUSAGE.

UsageIndex [in]

Typ: UINT

Nullbasierter Index (in Kombination mit Usage), der die Komponente der Vertexdeklaration identifiziert, die die ursprüngliche Parametrisierung in pMeshIn enthält. Die Kombination aus D3DDECLUSAGE_TEXCOORD und Index 0 ist für die neue Parametrisierung erforderlich. jede andere Verwendungs-Index-Kombination kann verwendet werden.

pTextureOut [out]

Typ: LPDIRECT3DTEXTURE9

Textur neu gestampelt.

Rückgabewert

Typ: HRESULT

Wenn die Methode erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Methode fehlschlägt, kann der Rückgabewert einer der folgenden sein: D3DERR_INVALIDCALL, E_OUTOFMEMORY.

Bemerkungen

Eine Parametrisierung im Fall dieser Funktion ist ein Satz von Texturkoordinaten, der die Dreiecke eines Gitters den Dreiecken einer Textur zuordnet. Die neue Parametrisierung ist der Satz von Texturkoordinaten, die in der Rinnenhilfsschnittstelle enthalten sind, und die ursprüngliche Parametrisierung ist der Satz von Texturkoordinaten, die im Eingabegitter enthalten sind.

Es wird davon ausgegangen, dass die Texturkoordinaten zwischen 0 und 1 liegen, einschließlich, und die neue Parametrisierung muss in der Vertexdeklaration als Texturkoordinatenindex 0 deklariert werden. Die ursprüngliche Textur und die neu gestampelte Textur müssen die gleiche Breite und Höhe aufweisen.

So bereiten Sie z. B. die Neuzuordnung einer Textur vor:

  • Erstellen Sie die ursprüngliche Texturschnittstelle (pOriginalTex unten) mithilfe einer Funktion wie D3DXCreateTextureFromFile.
  • Erstellen Sie die neue Texturschnittstelle für die neu gestampelte Textur (pResampledTex unten). Die Größe dieser Textur muss mit der Größe (Breite und Höhe) der Rinnehilfstextur übereinstimmen.
  • Rufen Sie D3DXCreateTextureGutterHelper auf, um die neue Parametrisierung wie hier gezeigt abzurufen:
// 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

Ein gängiges Szenario könnte sein, UVAtlas zum Erstellen eines Texturatlas zu verwenden und dann ResampleTex zu verwenden, um die Textur in die neue Parametrisierung zu integrieren. Weitere Informationen zu Atlanten finden Sie unter Using UVAtlas (Direct3D 9).

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

ID3DXTextureGutterHelper

D3DXUVAtlasErstellen