くねくねサンプル(解説)
■「D3DFVF_XYZB1」って最近使わないのですが
どうも、ハードでサポートしてないケースなどあるので、あまし使っていないのですが
今回、使用して見ようと思います
■頂点フォーマット
こんな感じですかね
struct D3DVERTEXB1 { float x,y,z; float blend1; enum { FVF = D3DFVF_XYZB1 } ; };
■ウエイトを使う事を宣言
//----------------------------------------- // ウエイト1個使う宣言 pD3DDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_1WEIGHTS);
■2つのマトリックスを登録
//----------------------------------------- //ワールド座標の回転 D3DXMatrixRotationZ( &matWorld2, (sin(ff))*3.14159/2.0f ); D3DXMatrixTranslation( &matWorld1, 10.0f, 0.0f, 0.0f ); matWorld2 *= matWorld1; ff +=0.01; D3DXMatrixTranslation( &matWorld1, 0.0f, 0.0f, 0.0f ); pD3DDevice->SetTransform( D3DTS_WORLDMATRIX(0), &matWorld1 ); pD3DDevice->SetTransform( D3DTS_WORLDMATRIX(1), &matWorld2 );
■登録
//----------------------------------------- // モデル登録 D3DVERTEXB1 vtx[ 10 ]={ { 0.0f, 5.0f, 0.0f, 1.00f }, { 0.0f, -5.0f, 0.0f, 1.00f }, { 5.0f, 5.0f, 0.0f, 0.75f }, { 5.0f, -5.0f, 0.0f, 0.75f }, { 10.0f, 5.0f, 0.0f, 0.50f }, { 10.0f, -5.0f, 0.0f, 0.50f }, { 15.0f, 5.0f, 0.0f, 0.25f }, { 15.0f, -5.0f, 0.0f, 0.25f }, { 20.0f, 5.0f, 0.0f, 0.00f }, { 20.0f, -5.0f, 0.0f, 0.00f }, }; pD3DDevice->SetFVF( D3DVERTEXB1::FVF ); pD3DDevice->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 8, vtx, sizeof(D3DVERTEXB1) );