void CSfxParticle::Render( LPDIRECT3DDEVICE9 pd3dDevice ) { CModel* pModel = m_pModel; DWORD dwModelType = pModel->GetModelType(); //m_vScale = D3DXVECTOR3( 3.0f, 13.0f, 13.0f ); D3DXMATRIX matTrans; D3DXMATRIX matScale; D3DXMATRIX matRotation; D3DXMatrixScaling( &matScale, m_vScale.x, m_vScale.y, m_vScale.z ); D3DXMatrixRotationY( &matRotation, D3DXToRadian( -m_fAngle ) ); D3DXMatrixTranslation( &matTrans, m_vPos.x, m_vPos.y, m_vPos.z); static FLOAT m_fRadian = 0; static FLOAT m_fScane = 0; D3DXMATRIX matWorld ; /* D3DXVECTOR3 vDir = (g_WorldMng()->m_pCamera->m_vLookAt) - (g_WorldMng()->m_pCamera->m_vPos2); D3DXVec3Normalize( &vDir, &vDir ); FLOAT y = ( vDir.x > 0.0f ) ? -atanf( vDir.z / vDir.x) + D3DX_PI / 2 : -atanf( vDir.z / vDir.x) - D3DX_PI / 2; // y FLOAT x = -asinf( vDir.y); D3DXMatrixRotationYawPitchRoll( &matRotation, y, x, m_fRadian ); */ // D3DXMatrixRotationZ(&matRotation,D3DXToRadian(45.0f)); // D3DXMatrixRotationZ(&matRotation,0); // matRotation*=g_WorldMng()->m_pCamera->m_matInvView; matRotation=g_WorldMng()->m_pCamera->m_matInvView; m_fRadian += 0.05f; if( m_fRadian > D3DX_PI * 2 ) m_fRadian -= D3DX_PI * 2; //D3DXVECTOR3 vScale( m_fScane, m_fScane, m_fScane ); /* D3DXMatrixIdentity( &matWorld ); D3DXMatrixMultiply( &matWorld, &matWorld, &matScale ); D3DXMatrixMultiply( &matWorld, &matWorld, &matRotation ); D3DXMatrixMultiply( &matWorld, &matWorld, &(g_WorldMng()->m_pCamera->m_matInvView) ); D3DXMatrixMultiply( &matWorld, &matWorld, &matTrans ); */ matWorld=matScale*matRotation*matTrans; pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); m_nEffect=0; m_pModel->SetFrame( m_nEffect ); m_pModel->Render( pd3dDevice, NULL ); }