C++ C++;DirectX9不正确的精灵旋转

C++ C++;DirectX9不正确的精灵旋转,c++,rotation,directx,sprite,directx-9,C++,Rotation,Directx,Sprite,Directx 9,我对精灵旋转有问题。旋转后屏幕上缺少精灵,为什么?我只想旋转雪碧在270度(4.712弧度) 下面的代码获取当前变换矩阵 m_sprite->GetTransform(&mat); 以下代码计算新的变换矩阵,由于使用相同的变量,因此将覆盖矩阵mat D3DXMatrixTransformation2D(&mat, NULL, NULL, NULL, &D3DXVECTOR2(m_width / 2, m_height / 2), rotation, &D3

我对精灵旋转有问题。旋转后屏幕上缺少精灵,为什么?我只想旋转雪碧在270度(4.712弧度)


下面的代码获取当前变换矩阵

m_sprite->GetTransform(&mat);
以下代码计算新的变换矩阵,由于使用相同的变量,因此将覆盖矩阵mat

D3DXMatrixTransformation2D(&mat, NULL, NULL, NULL, &D3DXVECTOR2(m_width / 2, m_height / 2), rotation, &D3DXVECTOR2(m_posX, m_posY));
下面的代码还原了无法工作的旧变换矩阵,旧变换丢失,您只能应用新变换

m_sprite->SetTransform(&mat);
在计算新的变换矩阵时,最好使用不同的矩阵变量,然后将其与旧的变换矩阵相乘,得到最终的矩阵

D3DXMATRIX newmat;
D3DXMatrixTransformation2D(&newmat, NULL, NULL, NULL, &D3DXVECTOR2(m_width / 2, m_height / 2), rotation, &D3DXVECTOR2(m_posX, m_posY));
mat *= newmat;
m_sprite->SetTransform(&mat);

需要更多的信息,旋转的值是多少,m_posX和m_posY?@Sheppard_你解决了这个问题吗?
D3DXMATRIX newmat;
D3DXMatrixTransformation2D(&newmat, NULL, NULL, NULL, &D3DXVECTOR2(m_width / 2, m_height / 2), rotation, &D3DXVECTOR2(m_posX, m_posY));
mat *= newmat;
m_sprite->SetTransform(&mat);