D3DXMatrix转换2D表现奇怪

时间:2013-02-21 00:02:30

标签: c++ matrix rotation directx sprite

我想将2D精灵旋转到他们的位置,而不是任何其他点,但我的功能有问题。

我看到人们以这种方式使用D3DXMatrixTransformation2D(不包括缩放):

D3DXMATRIX mat;

D3DXVECTOR2 center(sprite.width / 2, sprite.height / 2);

D3DXVECTOR2 pos(sprite.x, sprite.y)

D3DXMatrixTransformation2D(
            &mat,
            NULL,
            NULL,
            NULL,
            &center,
            sprite.rotation,
            &pos);

但是这样做,我的精灵在一个奇怪的点周围旋转了一圈。

我尝试并尝试了这个解决方案,但是当我进一步操纵实体坐标和东西时感觉它有一些副作用。

D3DXVECTOR2 pos(sprite.x + (sprite.width / 2), sprite.y + (sprite.height / 2))

D3DXMatrixTransformation2D(
            &mat,
            NULL,
            NULL,
            NULL,
            &pos,
            sprite.rotation,
            NULL);

我缺少什么?

1 个答案:

答案 0 :(得分:0)

如果您的图像文件的尺寸大于您尝试旋转的图像部分,那么可能会让您头疼一会儿的一个小问题。 我的意思是,如果您的图像文件是512x512,并且左下角只有64x64的小猫,其余部分是0 alpha,它将占据图像文件的中心,不是猫。

如果您正在发生这种情况,您可以将猫或其任何图像移动到图像文件的中心,或者在DirectX中进一步查看,您可以在其中定义矩形并使用该矩形作为图像文件的剪切,以绑定您的图像(猫)。