WPF& XNA Paint的想法

时间:2012-10-01 11:02:36

标签: wpf xna

我在WPF中创建类似Paint的应用程序。我想在那里有层,历史,效果选择等。但是,我认为使用Canvas / InkCanvas的标准方法对于复杂图像来说太慢了。我考虑创建XNA项目并将其嵌入到WPF应用程序中以使用现代GPU的强大功能(xna项目就像绘制画布空间)。不是坏主意吗?是否可以在一个项目中在WPF和XNA之间进行通信?

1 个答案:

答案 0 :(得分:3)

这是一个坏主意。有几个原因:

  • WPF有自己的内置硬件加速(see here)。您无需使用XNA来获得硬件加速。

  • XNA专为实时3D渲染而设计。像素操作是它的弱点 - 通过直接读取/写入像素,您将失去大部分性能优势。请注意,您会发现很难避免进行昂贵的像素读取,因为XNA的渲染目标可以是“lost”。

  • XNA将为您提供合成图层的性能提升(但您也可以使用WPF)。它将为您提供应用大型全图像效果的性能提升 - 但是有些种类的全图像效果只能在CPU上合理地完成。

  • XNA对最大纹理大小和目标平台的硬件功能等方面施加了限制。

  • 您可能不需要像您想象的那么多的表现。您可以将XNA用于连续运行60帧/秒的游戏。图像编辑器不需要那么快。全图像效果操作可以花费相对长的时间。交互式绘画操作不必一次更新整个图像 - 因此即使在CPU上也会很快。

回答你的上一个问题 - 是的,你可以在WPF中嵌入XNA。虽然这很棘手 - 但是琐碎的方法涉及从XNA到WPF的非常慢的缓冲区复制。 Here is a project声称以快捷的方式做到这一点。