2


我是 .net 编程的新手,特别是 windows phone 7(我是一个 Java 人)。
我正在为我大学的 Windows Phone 7 研讨会编写应用程序,该研讨会具有半增强现实模式。(半因为 win-pho7 不允许摄像头馈送)。
主要是由于俯仰、偏航和 gps 变化(我订阅),我需要在背景(应该是相机馈送)上渲染各种图像的叠加。
我试图了解我是否需要使用 XNA,因为在我看来这似乎是一项图形要求很高的任务,这就是我们解释 XNA 的用途,或者我可以使用 Silverlight,这似乎更易于开发draggabale 控件和所有。
我希望我的问题是因为,如果不是,请询问,我会提供更多说明。

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

4

5 回答 5

2

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

XNA 的特定功能是:

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

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

图像的数量不应该成为问题,只要它们不是很大并且有很多重叠。

免责声明(应考虑到任何潜在的偏见):与 XNA 相比,我拥有更多的 Silverlight 经验。如果有更多 XNA 和更少 Silverlight 经验的人对此有不同的看法,我不会感到惊讶。

于 2010-12-10T18:54:17.000 回答
2

我也有同样的疑问。我相信 WPF/Silverlight 比 XNA 更好,因为它的代码水平很高。我们在那里有很多控件,而 XNA 没有。我实际上是在 WPF 中创建一个游戏。但我必须更进一步。好吧,这个链接可以帮助你: WPF 与 XNA 相比有哪些限制?

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

于 2010-12-10T18:57:49.783 回答
1

我想说您可以使用其中任何一个来完成处理 2D 图像的工作。两者都有能够做到这一点的 API,并且都能够处理资源受限设备上出现的性能问题。

您可以看到的是,每种功能都为您可能想要使用的表格带来了哪些独特的功能。

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

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

您还可以查看您当前的技能组合,看看哪些技能可以缩短您的学习曲线。

我想您的 Java 体验是使用与 Silverlight 而非 XNA 更相似的平台功能(如 UI 控件),但这是一个假设。

很久以前,当我在 Uni 时,我已经使用 C 实现了带有纹理和光线追踪的 3D 对象渲染到 2D 图像上,而没有图形 API 支持,你可能在 Java 中也能做到这一点。如果有像 XNA 这样的 API 的支持,这种项目会容易得多。

编辑:WRT 到您上次更新,这些类型的转换可以使用 silverlight 在渲染线程 (gpu) 上处理,就像使用 XNA API 完成的纹理动画将传递给 gpu 线程一样。我建议首先对图片动画进行一些性能测试,以验证您在深入研究后不会遇到任何意外。

如果您有这种倾向,您可以使用 XNA 复制演示以进行比较,看看在触发多个动画的效率方面是否有任何显着差异。虽然我确信每个单独的动画都会表现得相当。

于 2010-12-10T23:47:30.137 回答
1

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

  1. Silverlight 能够满足您的要求:我们已经看到它在设备上运行 60FPS,上面有图形
  2. XNA 将提供 3D 图形而不是 2D 图形的优势

需要注意的要点:

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

祝你好运!

埃亚尔

于 2010-12-12T14:23:28.033 回答
0

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

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

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

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

于 2010-12-10T19:56:55.297 回答