Directx中的精灵剪切

Sprite Shearing in Directx

本文关键字:精灵 Directx      更新时间:2023-10-16

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

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

这不是我想要的结果

我想要的是这个

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

附言。我正在使用XMMatrixOrthographicOffCenterLH来设置相机

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

考虑到这一点,你应该按照一丁的建议去做。首先应用对齐矩形的变换,执行切变并还原第一个变换。

最简单的方法是向上平移spriteHeight并使用负剪切系数。因此,转换将是:

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