当我在 Directx 11 中剪切 Sprite 时,它显示了这一点

*******     *******      <= 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)

关于c++ - Directx 中的 Sprite 剪切,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13949132/

10-13 08:22