2012-12-19 36 views
3

当我在DirectX 11剪切的精灵,它显示了这个雪碧剪切在DirectX

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

这里是没有结果的,我想

我要的是这个

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

PS。我使用XMMatrixOrthographicOffCenterLH来设置相机

+0

不知道你用什么API来应用剪切。一般来说,如果乘以某种变换矩阵,剪切矩阵通常保持中间固定,随后您需要应用移位来对齐顶部或底部边缘。 – yiding

回答

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)