c# - XNA 中让玩家在屏幕上流畅绘画的最佳方法是什么?

标签 c# windows-phone-7 xna xna-4.0 farseer

我正在开发一款 wp7 游戏,玩家在程序中画线,然后球从这些线弹开。我正在使用 XNA 和 farseer physics。用户画一条线,然后程序将其转换为物理对象或至少是 vector2 列表的最佳方法是什么?我试过创建一个 TouchLocations 列表,但如果用户画得不是很慢,它就会变得参差不齐,就像我附上的图片一样。有什么建议么? 谢谢 http://img829.imageshack.us/img829/3985/capturehbn.png

这是一些代码: 我正在使用 gamestatemanagement 示例,这是在 HandleInput 方法中

foreach (TouchLocation t in input.TouchState) {
  pathManager.Update(gameTime, t.Position);
}

pathManager 类管理一组路径类,它们是可绘制的物理对象。这是 pathManager.Update

public void Update(GameTime gameTime, Vector2 touchPosition) {
  paths.Add(new Path(world,texture, new Vector2(5,5) ,0.1f));
  paths[paths.Count-1].Position = touchPosition;
}

这正是我现在正在做的,我愿意为任何事情放弃它。你会认为每个触摸位置都有一个 5x5 的矩形会降低性能,但使用 farseer 我没有看到任何下降,即使是全屏。但是,如果快速绘制线条,则该系统根本不会创建平滑线条。

我怀疑这有什么帮助,但这是 Path 构造函数。

public Path(World world, Texture2D texture, Vector2 size, float mass) {
  this.Size = size;
  this.texture = texture;
  body = BodyFactory.CreateRectangle(world, size.X * pixelToUnit, size.Y * pixelToUnit, 1);
  body.BodyType = BodyType.Static;
  body.Restitution = 1f;
  body.Friction = 0;
  body.Friction = 10;
}

最佳答案

How do I draw lines using XNA?

绘制图元的最佳方法是使用 basiceffect 着色器。这将由硬件加速。如果愿意,您还可以为其添加纹理。

我不确定它在 WP7 上是否相同,但这至少适用于 Windows7。

关于c# - XNA 中让玩家在屏幕上流畅绘画的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14023630/

相关文章:

c# - 在 Xna/MonoGame 中按程序生成 Texture2D

3d - XNA 3d 物理引擎

javascript - ASP.NET MVC 中的自定义输入格式

c# - 在调用 Add() 之后但在调用 SaveChanges() 之前从上下文中检索实体

c# - DotNetBrowser DOMNode调试

windows-phone-7 - 如何获取当前的GPS时间?

c# - 使用 T4 生成 WMAppManifest.xml

c# - 为什么在 MVP 中使用 Presenter 接口(interface)?

windows-phone-7 - 清除window phone 7中的缓存

c# - XNA View Matrix - 寻求解释