Csharp/C#教程:WPF与XNA一起呈现数千个精灵分享


WPF与XNA一起呈现数千个精灵

我需要渲染数千个用线条相互链接的椭圆。 在WPF应用程序中呈现它的最佳方式(在性能方面)是什么。 WPF Canvas的绘画比XNA绘画更糟糕吗?

实际上,隐藏的问题是:是否可以在WPF主机内进行一些xna渲染? 我看到一些使用无边框xna窗口覆盖的示例,但没有原生解决方案……

谢谢,Aurélien

如果做得好,你可以在WPF渲染中获得一些相当高的性能,这样做的好处是你不必采取WPF-XNA互操作的痛苦。 如果使用WPF的低级渲染API(例如CompositionTarget.Rendering和DrawingContext ),则可以渲染(并设置动画)大量的视觉效果。 您还可以利用.net 4.0中新的缓存合成function 。 还有更多只是以此为出发点。

我已经成功地将XNA与WPF“集成”,首先将XNA场景渲染到WinForms控件,然后使用WindowsFormsHost元素在WPF中托管该控件。

我刚刚在CodeProject上发现了这篇文章 :

我们希望将我们的XNA场景集成到WPF用户界面中,就像我们集成canvas或任何小部件一样。 但在XNA中查看3D场景的最佳方法是将其合并到一个窗口中。 使用WinForm可以获得任何WPF控件的句柄是不可能的。 然后诀窍是重写围绕Game类的XNA框架的一部分。 目标是从Panelinheritance一个新的Game类(在我们的例子中是Canvas),以便能够将它包含在WPF可视化树中。 面板的可视界限将是XNA场景的可视区域。 然而,我们刚刚说过,不可能获得一个不从Windowinheritance的可视控件的句柄。 那么我们如何使用XNA显示3D呢​​? 我们只需在面板上方显示一个没有边框的窗口。 当应用程序具有焦点并且面板可见时,此窗口将始终位于顶部,并且在此情况下将隐藏。 同样,当面板不可见时,我们将停止游戏的活动。

Microsoft论坛上的这个post对此进行了讨论,一张海报说明:

然后,结论是您可以将XNA渲染到WPF表单中而没有任何问题,但您必须避免使用Game和GraphicsDeviceManager类,因为后者需要运行Game实例(构造函数被定义为新的GraphicsDeviceManager(游戏游戏))和Game类没有提供任何方法来定义它呈现的窗口。

所以看起来它是可能的,但需要在方程的XNA方面做一些工作。

但请注意,XNA应用程序不能在没有至少1.1着色器GPU的系统上运行。

上述就是C#学习教程:WPF与XNA一起呈现数千个精灵分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1030529.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐