首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF 4+软件渲染还是个问题吗?

WPF 4+软件渲染还是个问题吗?
EN

Stack Overflow用户
提问于 2013-06-04 02:08:09
回答 2查看 326关注 0票数 4

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

我找到了this list,但它是2010年的。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-04 02:15:25

这个列表仍然是准确的。

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

这包括:

在windows XP上,通过RenderTargetBitmap

  • Any printed output

  • Surfaces渲染的
  • TileBrush
  • Content超出了图形硬件的最大纹理大小
  • 分层窗口。
票数 4
EN

Stack Overflow用户

发布于 2014-09-03 05:01:28

以下由Dwayne Need撰写的博客文章似乎建议windows XP now 上的分层窗口是 hardware accelerated。

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指出的那样),它应该是软件渲染的,但这不是我所经历的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16903040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档