繁体   English   中英

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

[英]C++ DirectX9 incorrect sprite rotation

我有一个精灵旋转问题。 旋转后屏幕上没有精灵,为什么? 我只想在270度(4.712弧度)上旋转精灵。

D3DXMATRIX mat;

m_sprite->Begin(D3DXSPRITE_ALPHABLEND);
m_sprite->GetTransform(&mat);
D3DXMatrixTransformation2D(&mat, NULL, NULL, NULL, &D3DXVECTOR2(m_width / 2, m_height / 2), rotation, &D3DXVECTOR2(m_posX, m_posY));
m_sprite->SetTransform(&mat);
m_sprite->Draw(m_texture, NULL, NULL, &m_pos, -1);
m_sprite->End();

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

m_sprite->GetTransform(&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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM