Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Aby ustalić, czy Direct3D obsługuje tweening wierzchołków, sprawdź flagę D3DVTXPCAPS_TWEENING w elemencie VertexProcessingCaps struktury D3DCAPS9 . W poniższym przykładzie kodu użyto metody IDirect3DDevice9::GetDeviceCaps w celu określenia, czy jest obsługiwane tweening.
// 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.
Aby użyć tweeningu wektorowego, należy najpierw skonfigurować niestandardowy typ wierzchołka, który używa drugiej normalnej lub drugiej pozycji. Poniższy przykład kodu przedstawia przykładową deklarację zawierającą zarówno drugi punkt, jak i drugą pozycję.
struct TEX_VERTEX
{
D3DVECTOR position;
D3DVECTOR normal;
D3DVECTOR position2;
D3DVECTOR normal2;
};
//Create a vertex buffer with the type TEX_VERTEX.
Następnym krokiem jest określenie bieżącej deklaracji. Poniższy przykład kodu pokazuje, jak to zrobić.
// 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()
};
Aby uzyskać więcej informacji na temat tworzenia niestandardowego typu wierzchołka i buforu wierzchołka, zobacz Creating a Vertex Buffer (Direct3D 9).
Notatka
Po włączeniu tweeningu wierzchołka w bieżącej deklaracji musi być obecna druga pozycja lub drugi wektor normalny.
Tematy pokrewne