【问题标题】:Performance of WriteableBitmap(Ex) vs DrawingContextWriteableBitmap(Ex) 与 DrawingContext 的性能
【发布时间】:2013-12-21 13:21:00
【问题描述】:

我正在 WPF 中构建一个自定义 UI 框架,我基本上尽可能多地放弃内置布局系统和控件。到目前为止,我一直直接从UIElement 分支出来,但由于我已经在进行测量、安排和渲染自己,我想我可以通过“更接近金属”(尤其是当涉及到布局/渲染时)。留在托管代码中而不害怕自己做脏活的情况下有多接近?

我现在在一边玩弄一个原型概念,我只有一个从 UIElement 继承的元素:一个Root 对象,类似于一个精简的Canvas,它“托管”了我的布局引擎的其余部分和渠道相关IInputElement 受益。从那时起,所有元素都将是完全自定义的对象,不继承自 WPF 中的任何内容,而是直接呈现到 Root 的 DrawingContext(在其 OnRender 方法中)。

现在我想知道拥有 WriteableBitmap 根元素并手动绘制到它的相对性能,例如为了方便使用 WriteableBitmapEx。没有抗锯齿不是问题,自定义命中测试系统也不是问题。

我的想法主要是 WriteableBitmap(Ex) 没有任何 GPU 加速增益的特权,因此当需要重新绘制/转换大面积区域时会 [非常] 慢。

不过,我确实对“引擎中的基于像素的渲染引擎”有其他需求,因此我仍然对此感兴趣。

有什么见解吗?

编辑:那么 SharpDX 在这种情况下呢?也许一旦我这样做了,我还不如去使用像 SharpDX 这样的 DirectX 包装器的 WinForms 解决方案(..or.. 我想我真正应该做的是注册整个 C++ enchilada ,但不幸的是,我没有时间开始学习 的东西)..

【问题讨论】:

  • 你摇滚。只是想说。
  • 最后,我完全放弃了 WPF 和 .Net,转而学习 C++。然后我从本机代码开始使用 Direct2D,一开始似乎还可以。然后我决定我想要更多的控制,所以我也放弃了 Direct2D,并直接在 Direct3D 11 之上推出了我自己的原生 2D UI 框架。现在我已经足够接近金属了。我现在可以做的还有很多 -而且速度很快。从头开始定制我自己的图形框架可以让我做很多优化。它不如 Direct2D 灵活和扩展,但性能更好。

标签: c# wpf writeablebitmap writeablebitmapex drawingcontext


【解决方案1】:

WriteableBitmapEx 非常快,即使它只是在 CPU 上运行。它用于这个高性能图表控件:http://www.scichart.com

您确实也应该检查 Direct3D。您可以获得非常好的性能,但这实际上取决于它的使用方式以及大多数绘制操作被缓存以及 CPU-GPU 通信尽可能允许。

【讨论】:

  • 嗨,Rene (remember this?).. 是的,WriteableBitmapEx 非常快 - 对于很多事情。但是我现在对它进行了快速测试,它对于我的需求有一些缺点。我还通过 SharpDX 包装器测试了 Direct2D,它的速度非常快——尤其是对于折腾大位图时。看起来我选择了那个 - 这意味着我可以完全放弃 WPF 并将我自己的布局系统放在“DirectX”的顶部......直到我可以去 C++ ;)
  • Direct2D 没那么快。只有非抗锯齿线才能快速执行。我为 SciChart 调查了它,并迅速将其丢弃,因为它太慢了。 C++ 绘图也不是那么快(我们尝试了 Agg,它是一个 C++ 绘图引擎)。说实话,WBEx 是在 Windows 上绘图的最快方法之一。我们花了将近 2 年的时间研究才用 DirectX10 自定义 2D 绘图引擎击败它! scichart.com/how-fast-is-scichart-wpf-chart
  • @Dr.ABT 您是在将 WriteableBitmap 显示到 Image 控件中,还是对显示 WriteableBitmap 有更好的建议。也许您可以就显示大图像提供一些建议?谢谢!
  • 嗨 @WinterMute 是的 WriteableBitmap 必须显示在 Image 控件的 Image.Source 属性中。大图?您可能需要平铺,因为 Windows 中的最大位图大小有限制。在我的公司 SciChart 中,我们还成功地将 DirectX 内容集成到 Image 控件中,方法是使用 Texture Readback 到 WriteableBitmap。该解决方案非常适用于 WPF 中的高性能图形!
猜你喜欢
  • 2010-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多