   Rotation issue
  i'm trying to rotate my player but i get a strange result: if i start rotating it to the (for example) left and then i want to rotate to the right, it still goes on the left, reaches a bigger angle and THEN changes direction o_Ohere's the code void CPlayer::Render(LPDIRECT3DDEVICE9 pDevice ){if(!m_Model)return;pDevice->SetTransform(D3DTS_WORLD , &m_MatWorld);m_Model->Render(pDevice);}void CPlayer::CheckMovement(WPARAM wParam){if(wParam == 'j' || wParam == 'J')m_Angle -= 0.005f;else if(wParam == 'l' || wParam == 'L')m_Angle += 0.005f;D3DXMatrixRotationY(&m_MatRot, m_Angle);D3DXMatrixMultiply(&m_MatWorld, &m_MatRot, &m_MatWorld);}any advices?   
  Im not too sure but you could try getting rid ofD3DXMatrixMultiply(&m_MatWorld, &m_MatRot, &m_MatWorld);As your not multiplying any matrices. Good Luck =]   ;  D3DXMatrixMultiply(&m_MatWorld, &m_MatRot, &m_MatWorld); rotates the current translation matrix with the rotation matrix i've just created, i don't think it's useless :D   ;  The problem is that if your world matrix includes other transformation, like translation, subsequest rotations get added on to them.  So, the rotation will essentially occur after the other transformations, which means you will not be rotating the object arounds its center, but around the world center.The solution is to keep your transformations in separate matrices.  D3DXMATRIX S, R, T;As the object moves, you add translations to the T matrix. If you have any scale changes, you add them to the S matrix.  And you put all rotations in the R matrix.Then before rendering you put them all together:D3DXMATRIX World = S * R * T;pDevice->SetTransform(D3DTS_WORLD , &World);That way, you will always rotate it before any translations are applied.   ;  thank you, works perfectly :D i knew it was something so obvious... i was using only the rotation and directly the world matrix for the translations ^__^'   