yo probamos este código:Cómo rotar un objeto en ejes XYZ en DirectX?
D3DXMatrixRotationX(&matRotate, rx);
D3DXMatrixRotationY(&matRotate, ry);
D3DXMatrixRotationZ(&matRotate, rz);
d3ddev->SetTransform(D3DTS_WORLD, &matRotate);
pero parece que siempre solamente gire la última rotación (eje Z).
¿Cómo giro un objeto con todos los ejes XYZ al mismo tiempo? Im tratando de encontrar DirectX equivalente para la rotación de OpenGL:
glRotatef(rx, 1, 0, 0);
glRotatef(ry, 0, 1, 0);
glRotatef(rz, 0, 0, 1);
EDIT: Parece que lo he descubierto por mí mismo:
D3DXMATRIX matRotateX;
D3DXMATRIX matRotateY;
D3DXMATRIX matRotateZ;
D3DXMatrixRotationX(&matRotateX, rx);
D3DXMatrixRotationY(&matRotateY, ry);
D3DXMatrixRotationZ(&matRotateZ, rz);
D3DXMATRIX matRotate = matRotateX*matRotateY*matRotateZ;
d3ddev->SetTransform(D3DTS_WORLD, &matRotate);
si no, por favor, comentar . ¡No puedo publicarlo como respuesta hasta que hayan pasado 8 horas! (necesita +7 reputación para hacerlo).
No sé acerca de DirectX, pero es posible que tenga la multiplicación en el orden incorrecto. Si sabe que su pedido es correcto, ignore este comentario, de lo contrario, verifíquelo. –