Verwenden von Vertex-Tweening (Direct3D 9)
Um zu ermitteln, ob Direct3D Vertex-Tweening unterstützt, suchen Sie im VertexProcessingCaps-Member der D3DCAPS9-Struktur nach dem flag D3DVTXPCAPS_TWEENING. Im folgenden Codebeispiel wird die IDirect3DDevice9::GetDeviceCaps-Methode verwendet, um zu bestimmen, ob Tweening unterstützt wird.
// This example assumes that m_pD3DDevice is
// a valid pointer to a IDirect3DDevice9 interface.
//
D3DCAPS9 d3dCaps;
m_pD3DDevice->GetDeviceCaps( &d3dCaps );
if( 0 != (d3dCaps.VertexProcessingCaps & D3DVTXPCAPS_TWEENING) )
// Vertex tweening is supported.
Um Vektor-Tweening verwenden zu können, müssen Sie zuerst einen benutzerdefinierten Vertextyp einrichten, der eine zweite Normal- oder eine zweite Position verwendet. Das folgende Codebeispiel zeigt eine Beispieldeklaration, die sowohl einen zweiten Punkt als auch eine zweite Position enthält.
struct TEX_VERTEX
{
D3DVECTOR position;
D3DVECTOR normal;
D3DVECTOR position2;
D3DVECTOR normal2;
};
//Create a vertex buffer with the type TEX_VERTEX.
Der nächste Schritt besteht darin, die aktuelle Deklaration festzulegen. Das folgende Codebeispiel zeigt, wie Dies geschieht.
// Create the shader declaration.
D3DVERTEXELEMENT9 decl[] =
{
{ 0, 0, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0 },
{ 0, 12, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 0 },
{ 0, 24, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 1 },
{ 0, 36, D3DDECLTYPE_FLOAT3, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_NORMAL, 1 },
D3DDECL_END()
};
Weitere Informationen zum Erstellen eines benutzerdefinierten Vertextyps und eines Vertexpuffers finden Sie unter Creating a Vertex Buffer (Direct3D 9).
Hinweis
Wenn Vertex-Tweening aktiviert ist, muss in der aktuellen Deklaration eine zweite Position oder eine zweite Normalposition vorhanden sein.
Zugehörige Themen