Uso di Vertex Tweening (Direct3D 9)
Per determinare se Direct3D supporta il tweening dei vertici, verificare la presenza del flag di D3DVTXPCAPS_TWEENING nel membro VertexProcessingCaps della struttura D3DCAPS9 . Nell'esempio di codice seguente viene usato il metodo IDirect3DDevice9::GetDeviceCaps per determinare se tweening è supportato.
// 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.
Per usare il tweening vettore, è prima necessario configurare un tipo di vertice personalizzato che usa una seconda normale o una seconda posizione. Nell'esempio di codice seguente viene illustrata una dichiarazione di esempio che include sia un secondo punto che una seconda posizione.
struct TEX_VERTEX
{
D3DVECTOR position;
D3DVECTOR normal;
D3DVECTOR position2;
D3DVECTOR normal2;
};
//Create a vertex buffer with the type TEX_VERTEX.
Il passaggio successivo consiste nel impostare la dichiarazione corrente. L'esempio di codice seguente illustra come eseguire questa operazione.
// 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()
};
Per altre informazioni sulla creazione di un tipo di vertice personalizzato e di un buffer del vertice, vedere Creazione di un buffer vertex (Direct3D 9).
Nota
Quando il tweening dei vertici è abilitato, è necessario presentare una seconda posizione o una seconda normale nella dichiarazione corrente.
Argomenti correlati