XNA精灵转换

时间:2010-11-08 12:12:04

标签: xna

有没有人知道如何在没有SpriteBatch.Draw()方法机会的情况下将转换应用于sprite?

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

2 个答案:

答案 0 :(得分:0)

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

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

你的另一个选择是编写你自己的精灵批处理器 - 但这似乎有点激烈。

答案 1 :(得分: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)));