Partilhar via


Usando interpolação de vértice (Direct3D 9)

Para determinar se o Direct3D dá suporte à interpolação de vértice, marcar para o sinalizador D3DVTXPCAPS_TWEENING no membro VertexProcessingCaps da estrutura D3DCAPS9. O exemplo de código a seguir usa o método IDirect3DDevice9::GetDeviceCaps para determinar se há suporte para interpolação.

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

Para usar a interpolação de vetor, primeiro você deve configurar um tipo de vértice personalizado que usa uma segunda posição normal ou uma segunda. O exemplo de código a seguir mostra uma declaração de exemplo que inclui um segundo ponto e uma segunda posição.

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

//Create a vertex buffer with the type TEX_VERTEX.

A próxima etapa é definir a declaração atual. O exemplo de código abaixo mostra como fazer isso.

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

Para obter mais informações sobre como criar um tipo de vértice personalizado e um buffer de vértice, consulte Criando um buffer de vértice (Direct3D 9).

Observação

Quando a interpolação de vértice está habilitada, uma segunda posição ou um segundo normal deve estar presente na declaração atual.

 

Interpolação de vértice