Partager via


Utilisation du tweening de vertex (Direct3D 9)

Pour déterminer si Direct3D prend en charge l’interpolation de vertex, case activée pour l’indicateur D3DVTXPCAPS_TWEENING dans le membre VertexProcessingCaps de la structure D3DCAPS9. L’exemple de code suivant utilise la méthode IDirect3DDevice9::GetDeviceCaps pour déterminer si le tweening est pris en charge.

// 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.

Pour utiliser l’interpolation vectorielle, vous devez d’abord configurer un type de vertex personnalisé qui utilise une deuxième normale ou une deuxième position. L’exemple de code suivant montre un exemple de déclaration qui inclut à la fois un deuxième point et une deuxième position.

struct TEX_VERTEX
{
    D3DVECTOR position;
    D3DVECTOR normal;
    D3DVECTOR position2;
    D3DVECTOR normal2;
};

//Create a vertex buffer with the type TEX_VERTEX.

L’étape suivante consiste à définir la déclaration actuelle. L’exemple de code ci-dessous montre comment procéder.

// 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()
};

Pour plus d’informations sur la création d’un type de vertex personnalisé et d’une mémoire tampon de vertex, consultez Création d’une mémoire tampon de vertex (Direct3D 9).

Notes

Lorsque l’interpolation de vertex est activée, une deuxième position ou une deuxième normale doit être présente dans la déclaration actuelle.

 

Vertex Tweening