Compartir a través de


Usar interpolación de vértices (Direct3D 9)

Para determinar si Direct3D admite interpolación de vértices, compruebe la marca de D3DVTXPCAPS_TWEENING en el miembro VertexProcessingCaps de la estructura D3DCAPS9 . En el ejemplo de código siguiente se usa el método IDirect3DDevice9::GetDeviceCaps para determinar si se admite la interpolación.

// 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 la interpolación vectorial, primero debe configurar un tipo de vértice personalizado que use un segundo normal o una segunda posición. En el ejemplo de código siguiente se muestra una declaración de ejemplo que incluye un segundo punto y una segunda posición.

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

//Create a vertex buffer with the type TEX_VERTEX.

El siguiente paso es establecer la declaración actual. En el ejemplo de código siguiente se muestra cómo hacerlo.

// 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 obtener más información sobre la creación de un tipo de vértice personalizado y un búfer de vértices, consulta Creating a Vertex Buffer (Direct3D 9) (Crear un búfer de vértices [Direct3D 9]).

Nota

Cuando la interpolación de vértices está habilitada, una segunda posición o una segunda normal debe estar presente en la declaración actual.

 

Interpolación de vértices