Я попробовал этот код:
D3DXMatrixRotationX(&matRotate, rx);
D3DXMatrixRotationY(&matRotate, ry);
D3DXMatrixRotationZ(&matRotate, rz);
d3ddev->SetTransform(D3DTS_WORLD, &matRotate);
Но, похоже, всегда вращается только последний поворот (ось Z).
Как вращать объект со всеми осями XYZ одновременно?
Я пытаюсь найти DirectX эквивалент для вращения OpenGL:
glRotatef(rx, 1, 0, 0);
glRotatef(ry, 0, 1, 0);
glRotatef(rz, 0, 0, 1);
EDIT:
Похоже, я понял это сам:
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);
Если нет, пожалуйста, прокомментируйте. Я не могу опубликовать это как ответ, пока не прошло 8 часов! (для этого нужна +7 репутация).