D3DX使えるなら

D3DXQuaternionRotationYawPitchRoll
でqを初期化(前回のqとして使用)

D3DXQuaternionRotationYawPitchRoll
今回の回転角度入れて回転量のqを取得

D3DXQuaternionMultiply
前回のqと回転量のq掛け合わせて回転後のqを取得(次の前回のqとして使用)

D3DXMatrixRotationQuaternion
qを回転行列にする

C#だと
Quaternion.RotateYawPitchRoll
Quaternion.Multiply
Matrix.RotateQuaternion
これ?