頂点ツイーニングの使用 (Direct3D 9)
Direct3D が頂点のツイーニングをサポートしているかどうかを判断するには、D3DCAPS9 構造体の VertexProcessingCaps メンバーのD3DVTXPCAPS_TWEENING フラグをチェックします。 次のコード例では、 IDirect3DDevice9::GetDeviceCaps メソッドを使用して、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.
ベクトル ツイーニングを使用するには、最初に 2 番目の法線または 2 番目の位置を使用するカスタム頂点タイプを設定する必要があります。 次のコード例は、2 番目のポイントと 2 番目の位置の両方を含むサンプル宣言を示しています。
struct TEX_VERTEX
{
D3DVECTOR position;
D3DVECTOR normal;
D3DVECTOR position2;
D3DVECTOR normal2;
};
//Create a vertex buffer with the type TEX_VERTEX.
次の手順では、現在の宣言を設定します。 次のコード例は、これを行う方法を示しています。
// 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()
};
カスタム頂点タイプと頂点バッファーの作成の詳細については、「 頂点バッファーの作成 (Direct3D 9)」を参照してください。
Note
頂点のツイーニングが有効になっている場合は、現在の宣言に 2 番目の位置または 2 つ目の法線が存在する必要があります。
関連トピック