我的用例需要XNA还是可以使用silverlight(Windows Phone 7)?

时间:2010-12-10 18:46:04

标签: .net silverlight windows-phone-7 xna augmented-reality


我一般都是.net编程和Windows Phone 7的新手(我是一个Java人) 我在我的大学写了一个Windows Phone 7工作室的应用程序,它有一个半增强现实模式。 (半因为win-pho7不允许相机进纸) 主要是我需要在俯仰,偏航和gps变化(我订阅)的背景下渲染各种图像的叠加(应该是相机输入)。
我试图了解是否需要使用XNA,因为在我看来这是一个图形要求很高的任务,这就是我们解释XNA的用途,或者我可以使用Silverlight,这似乎更简单的开发用于draggabale控制和所有。
我希望我的问题可以提出,如果不是,请问我,我会提供更多的澄清。

谢谢,
以太
更新
我主要试图理解是否渲染大约20个2D图像,这些图像将根据上述事件重新渲染,是Silverlight可以处理的,还是需要xna(因为图形要求太高)? 如果有人对这些问题有经验,我想听听 上次更新(希望如此):
我最关心的是silverlight处理屏幕刷新的能力,说话 看到这是一个增强现实应用程序,每当用户移动手机时我需要调整叠加图像,没有什么比这更复杂的只是向上/向下/向左/向右移动几个像素偏移,但仍有要做的事。
我担心尝试对图像应用那些小而频繁的更改会变成一个问题吗?并且看到这些是两种不同的实现路径,我认为这不符合过早优化的要求 我认为你很容易理解我宁愿用户使用silverlight,我也不确定它能否处理它 非常感谢您阅读所有更新,
Ittai

5 个答案:

答案 0 :(得分:2)

除非您需要特定于XNA的内容,否则我个人会选择Silverlight。

XNA特定功能是:

  • 渲染3D图像
  • 有意义地在游戏循环中运行并且具有不断变化的屏幕(而不是直接响应偶尔的用户事件。)
  • 需要做很多自定义,细粒度的图像处理。

这是最后一个可能使XNA看起来像是要去的那个但如果你只是覆盖预定义的图像或多边形,我会坚持使用Silverlight。

只要图像数量不大并且有很多重叠,图像的数量就不会成为问题。

免责声明(应考虑任何潜在的偏见):我拥有比使用XNA更多的Silverlight经验。如果有更多XNA和更少Silverlight经验的人看到这种情况,我不会感到惊讶。

答案 1 :(得分:2)

我有同样的疑问。我相信WPF / Silverlight比XNA更好,因为代码水平很高。我们有很多控件,XNA没有。我实际上是在WPF中创建一个游戏。但我必须更进一步。 嗯,这个链接可以帮助你: What limitations does WPF have comparing to XNA?

如果您认为在渲染时需要更多性能,那么我的建议是使用XNA。

答案 2 :(得分:1)

我会说你可以使用其中任何一个来操作2D图像。两者都具有能够实现此功能的API,并且两者都能够处理资源受限设备上出现的性能问题。

您可以看到的是每个您可能想要使用的独特功能。

Silverlight将控件带到表中。如果您正在接受用户输入并显示图像以外的内容,这可能是您的一个重要考虑因素。目前,XNA刚刚开始获得一些社区开发的支持来填补这个漏洞。

XNA带来了3D图形API,并支持通常在图形密集型应用程序(如游戏)中进行的数学计算,如矢量,矩阵,平面,光线,边界类型,3D空间中的交点。

您还可以查看当前的技能组合,了解哪种技能可以缩短学习时间。

我认为你的Java体验一直是平台功能(比如UI控件),它们与Silverlight比XNA更相似,但这是一个假设。

我很久以前在Uni时使用C而没有图形API支持将纹理和光线追踪渲染到2D图像上,你可以在Java中完成同样的工作。借助像XNA这样的API,这种项目会更容易。

编辑:WRT到你的上一次更新,这些转换可以使用silverlight在渲染线程(gpu)上处理,就像使用XNA API完成的纹理动画会传递给gpu线程一样。我建议首先对图片动画进行一些性能测试,以确认你在潜水太远之后不会有任何惊喜。

如果你觉得如此倾向,你可以使用XNA复制演示进行比较,看看是否在启动多个动画的效率方面有任何值得注意的差异。虽然我确信每个动画都会比较一致。

答案 3 :(得分:1)

我同意之前的答案,以及您对“过早优化”的评估:

  1. Silverlight能够满足您的需求:我们已经看到它在设备上显示60FPS图形
  2. XNA将为3D图形提供优势,而不是2D
  3. 需要注意的重点:

    • 我认为有一个FPS计数。但即使它确实如此,你也可以将自己的一个用于调试节点,以后可以在真正的手机上使用。这将很快让您感受到渲染的速度
    • 请务必在画布上使用“ BitmpaCache ”。有关更多信息,请参阅此处:WP7性能http://www.andybeaulieu.com/Default.aspx?EntryID=196&tabid=67和此处:(相同域名)/Home/tabid/67/EntryID/144/Default.aspx位图缓存。
    • 尝试“俯仰/偏航”API,在其上查找一些信息,查找它们的阈值。你从他们那里获得的数据可能不会非常准确,所以在这方面做一些更多的思考,而不是Silverlight perf:)
    • 我不确定GPS更新会对你有多大帮助,因为它可能太粗糙了
    祝你好运!

    的Eyal

答案 4 :(得分:0)

就开发时间而言,Silverlight将更快,更高效。如果您使用xna,您将花费大量时间来实现Silverlight提供的开箱即用的控件或功能。

在表现方面。 XNA为您提供更多控制和更好的性能。

您也可以将它们混合在一起。我开发了一个wp7游戏,我用XNA api来处理音频,因为它比silverlight容易得多。

我想最好的解决方案是使用silverlight制作您的应用程序,如果需要,可以调用XNA api来处理更多图形密集型要求。