3

令我失望的是,我发现我正在开发的应用程序之一在某些计算机上的渲染效果相当差。UI 静态图形和文本在不做任何动画的情况下遭受严重的撕裂。这使得文本不可读,当然,图形看起来很差。

我已经在不同的计算机上注意到了这个问题,但真正让我想到的是一台带有 Radeon Mobility 显卡的新型东芝笔记本电脑:当这台笔记本电脑使用电池运行时,没有撕裂 - 但当它插上电源运行时,一切都是一团糟。所以这看起来像是电源线噪声的问题,它显然会影响显卡——我猜是硬件加速图形。但是,非 WPF 图形渲染得很好,那么你如何告诉用户:“这不是我的应用程序,而是你的电源!” ?!

你遇到过这种情况吗?有没有办法解决它?

该应用程序是 .NET 4.0,笔记本电脑运行的是 Windows 7。

4

3 回答 3

2

我在我的宏基笔记本电脑上遇到了同样的事情。这实际上是屏幕驱动程序的驱动程序问题,供应商更新完全解决了这个问题。

我建议就这个问题直接联系东芝。将它们指向一些公开的、易于查找的 WPF 应用程序来演示该问题。

与此同时,我所知道的唯一“解决方案”是让 WPF 完全禁用硬件加速。 这篇文章描述了如何强制所有 WPF 应用程序进行软件渲染,这应该可以纠正撕裂(以显着降低渲染性能为代价)。

于 2010-10-05T15:51:52.650 回答
2

这些问题通常是由 ATI 视频卡的驱动程序引起的。NVidia 卡(虽然它们有自己的问题)通常不会显示这些问题。

修复它的最简单方法是禁用硬件渲染。这可能会导致性能问题,但通常不会产生明显的差异,有时甚至可以提高性能。您需要对其进行测试以供您自己的应用程序查看。从 Window 的代码中设置:

(PresentationSource.FromVisual(this) as HwndSource).CompositionTarget.RenderMode = RenderMode.SoftwareOnly;
于 2010-10-06T03:17:16.370 回答
1

正如 Reed 所说,这很可能是驱动程序问题。但是,我以前在一些具有最新驱动程序的卡上看到过这种情况,因此这并不总是可以解决的问题,具体取决于您的硬件。如果这由特定显卡引起的图形问题,您可以尝试此解决方法...

在 regedit 中,您可以创建或将以下 DWORD 值编辑为“1”以强制所有 WPF 应用程序的软件呈现:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration

我过去发现,在低端机器(上网本和集成显卡机器)上,这通常可以显着提高 WPF 应用程序的性能,因为它减少了 GPU 和 CPU 之间的内存争用。

于 2010-10-05T16:19:45.517 回答