Directx中的精灵剪切

时间:2012-12-19 09:25:14

标签: c++ directx transform

当我在Directx 11中剪切精灵时,它显示了这个

*******     *******      <= fixed
*     *  =>  *     *
*******       *******

这不是我想要的结果

我想要的是这个

*******       *******
*     *  =>  *     *
*******     *******      <= fixed

PS。我正在使用XMMatrixOrthographicOffCenterLH设置相机

1 个答案:

答案 0 :(得分:2)

剪切变换基本上如下:对于输入位置(p.x,p.y),将y坐标的一部分添加到x坐标。结果是:(p.x + s * p.y,p.y)。

考虑到这一点,你应该做yiding建议的。首先应用一个变换来对齐矩形,剪切并恢复第一个变换。

最简单的方法是向上翻译spriteHeight并使用负剪切因子。所以转型将是:

Translate(0, -spriteHeight, 0) * shearx(-s) * Translate(0, spriteHeight, 0)