WPF 4+软件渲染仍然是一个问题?

时间:2013-06-03 18:08:09

标签: wpf

在早期版本的WPF中设置Window.AllowsTransparency或使用BitmapEffects(不推荐使用的)或TileBrush用法,显然可能导致WPF切换到软件渲染模式而不是硬件渲染,从而显着影响性能。

我找到了this列表,但是从2010年开始。

是否有任何可能导致软件渲染发生在框架4+中的常见情况?假设硬件足够,纯粹与软件有关。

2 个答案:

答案 0 :(得分:4)

此列表仍然准确。

这在MSDN的有关图形渲染层的页面上有介绍。第二个标记为“以下特性和功能不是硬件加速:”列出了可能导致WPF中非加速渲染的特定标准。

这包括:

  • TileBrush
  • 通过RenderTargetBitmap
  • 呈现的内容
  • 任何打印输出
  • 表面超出图形硬件的最大纹理尺寸
  • Windows XP上的分层窗口。

答案 1 :(得分:0)

Dwayne Need的以下博客文章似乎表明Windows XP上的分层窗口现在 硬件加速

http://blogs.msdn.com/b/dwayneneed/archive/2008/09/08/transparent-windows-in-wpf.aspx

  

DirectX确实提供了IDirect3DSurface9 :: GetDC方法,它可以   返回引用DirectX表面的DC。不幸的是那里   DX9c是一个限制,如果它是这样的话会失败   在包含alpha通道的表面上调用。当然,   我们的分层窗口API的整个点是启用每像素   透明度。对Vista的这一限制被解除了,但我们最初的   释放强制WPF使用其软件渲染后备   渲染到XP上的分层窗口。我们能解除这个   XP的限制,我们作为一个热修复发布(KB 937106)。   这个热修复程序也包含在XP SP3中,所以去吧!现在,在XP上,   我们可以通过DirectX渲染并传递结果   IDirect3DSurface9 :: GetDC直接到UpdateLayeredWindow。好的   视频驱动程序,生成的副本将完全保留在视频上   卡,导致出色的表现。但是,有些视频驱动程序,   可以选择通过系统内存执行此副本。该   在这样的系统上的性能不会那么好,但应该   在许多场景中仍然是合理的。

我通过运行WPF Performance Suite的Perforator工具(并在分层窗口应用程序上选中标题为'使用紫色色调绘制软件渲染')的复选框来测试它...一切似乎都是硬件加速(没有紫色着色)。

最近关于Graphics Rendering Tiers的MSDN文档仍然说(正如Reed Copsey指出的那样)它应该是软件渲染的,但这不是我所经历的。