我尝试了这段代码:
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);
编辑: 看起来我自己解决了:
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);
如果没有,麻烦您留下评论。由于需要+7的声望才能发表答案,我需要等待8个小时之后才能发布它。