くねくねサンプル(ボーン)
頂点のフォーマットで「D3DFVF_XYZB1」に触れてなかんなのですが、くねくねするのに便利なので説明しようと思います。
G9lib.h
struct D3DVERTEXB1 { float x,y,z; float blend1; enum { FVF = D3DFVF_XYZB1 } ; };
G9lib.cpp
//------------------------------------------------------------------------------ //■テスト描画 //------------------------------------------------------------------------------ void G9lib::TestDraw() { D3DXMATRIX matView; D3DXMATRIX matProj; D3DXMATRIX matWorld1; D3DXMATRIX matWorld2; pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0,0,0), 1.0, 0); pD3DDevice->SetRenderState( D3DRS_LIGHTING,FALSE); //光源無効 pD3DDevice->BeginScene(); //----------------------------------------- //ワールド座標の回転 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 ); //----------------------------------------- //View 座標の設定 D3DXMatrixLookAtLH(&matView,&D3DXVECTOR3(10.0f, 0.0f, 60.0f), // カメラの位置を表す3次元ベクトル &D3DXVECTOR3(10.0f, 0.0f, 0.0f), // カメラの注視点を表す3次元ベクトル &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); // 上方向を表す3次元ベクトル pD3DDevice->SetTransform( D3DTS_VIEW, &matView ); //----------------------------------------- //透視変換の設定 D3DXMatrixPerspectiveFovLH( &matProj, D3DX_PI/4, width / height, 10.0f, 2000.0f ); pD3DDevice->SetTransform( D3DTS_PROJECTION,&matProj ); //----------------------------------------- // ウエイト1個使う宣言 pD3DDevice->SetRenderState(D3DRS_VERTEXBLEND, D3DVBF_1WEIGHTS); //----------------------------------------- // モデル登録 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) ); //----------------------------------------- // 描画 pD3DDevice->EndScene(); pD3DDevice->Present(NULL, NULL, NULL, NULL); }