在Windows XP的Viewport3D内部是否有一个强制执行抗锯齿的秘密技巧?

时间:2020-03-05 18:46:25  来源:igfitidea点击:

在Windows XP中,WPF的真实3D内容(通常使用Viewport3D控件显示)看起来非常丑陋,因为默认情况下它不会像其他WPF图形一样被抗锯齿。尤其是在较低的分辨率下,使用体验非常糟糕,以至于无法在生产代码中使用。

我已经设法使用驱动程序的设置在某些Nvidia显卡上强制进行抗锯齿。不幸的是,这有时会产生难看的伪像,并且仅适用于特定的卡和驱动程序版本。 Microsoft在这方面的官方说法是,Windows XP通常不支持抗锯齿3D,而我看到的工件是WPF已经进行了自己的抗锯齿(仅在XP上适用于2D)的结果。

因此,我想知道是否还有其他秘密技巧可以让我在Windows XP下强制对WPF 3D内容进行抗锯齿。

解决方案

回答

我们是否尝试过(从MSDN论坛上的线程)?

Well, it seems the reference in the MSDN link above incorrectly specify the affected registry root key. In MSDN it is specified as HKEY_CURRENT_USER, while the correct root key should be HKEY_LOCAL_MACHINE. I've tried setting up the HKEY_LOCAL_MACHINE\Software\Microsoft\Avalon.Graphics\MaxMultiplesampleType to '4' and I can get antialiasing for my WPF Application on XP.

回答

视频卡是否支持Shader 2.0?我们可以参考此Wiki页面以查看是否存在...

回答

我从.NET 3.0中的Matthew MacDonald的Pro WPF Windows Presentation Foundation获得的感觉是,这是不可能的:

There's one exception to WPF's software support.  Due to poor driver support, WPF only performs antialiasing for 3-D drawings if you're running your application on Windows Vista (and you have a native Windows Vista driver for your video card).

我从未见过有人建议我们可以在Vista以外的其他任何设备上启用WPF 3D中的AA,但是如果有一种新方法对我来说是新的,我也想知道!