2010-11-08 128 views
0

有谁知道如何将转换应用于雪碧没有SpriteBatch.Draw()方法的机会?XNA雪碧转换

(更新时评论) 这就是我需要的:我有一个圆形精灵。这张照片包含阴影。我需要拉伸这个圆(使椭圆)并旋转它,但是我希望阴影不会将其位置改变为椭圆。旋转和缩放每帧改变一次。我认为这是可能的矩阵转换

+0

你的问题是没有意义的,你可以尝试改写它你到底想达到 – 2010-11-08 12:59:35

+0

我需要:??在第一旋转精灵,然后缩放它。方法SpriteBatch.Draw()首先缩放sprite,然后旋转它。 – 2010-11-08 13:23:11

回答

0

最后应用传递到SpriteBatch.Begin的矩阵。使用此方法是通过SpriteBatch执行旋转操作后实现缩放操作的唯一方法(假设您的缩放比例不均匀)。

缺点是,如果每个精灵的比例不同,则必须为每个精灵开始一个新的批处理。

你的其他选择是编写你自己的精灵batcher - 但这似乎有点激烈。

0

谢谢!我找到了解决方案,但它是非常缓慢=(

this.displayMatrix = 
       Matrix.CreateTranslation(-(new Vector3(Position, 0))) * 
       Matrix.CreateRotationZ(1) * 
       Matrix.CreateScale(new Vector3(new Vector2(1f, 2f), 1)) * 
       Matrix.CreateTranslation((new Vector3(Position, 0)));