Ich habe diesen Code ausprobiert:
D3DXMatrixRotationX(&matRotate, rx);
D3DXMatrixRotationY(&matRotate, ry);
D3DXMatrixRotationZ(&matRotate, rz);
d3ddev->SetTransform(D3DTS_WORLD, &matRotate);
Aber anscheinend rotiert es immer nur die letzte Drehung (Z-Achse).
Wie kann ich ein Objekt gleichzeitig um alle XYZ-Achsen drehen? Ich versuche das DirectX-Äquivalent für die OpenGL-Rotation zu finden:
glRotatef(rx, 1, 0, 0);
glRotatef(ry, 0, 1, 0);
glRotatef(rz, 0, 0, 1);
EDIT: Sieht so aus, als hätte ich es selbst herausgefunden:
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);
Wenn nicht, bitte kommentieren. Ich kann es erst nach Ablauf von 8 Stunden als Antwort posten! (benötige +7 Reputation, um das zu tun).