当前位置:  开发笔记 > 运维 > 正文

如何确定WPF是使用硬件还是软件渲染?

如何解决《如何确定WPF是使用硬件还是软件渲染?》经验,为你挑选了4个好方法。

我在各种平台上对WPF应用程序进行基准测试,我需要一种简单的方法来确定WPF是使用硬件还是软件渲染.

我好像回忆起一个确定这个问题的电话,但现在不能把它放在手上.

另外,是否有一种简单的,基于代码的方式来强制一个渲染管道而不是另一个?



1> rudigrobler..:

检查RenderCapability.Tier

http://msdn.microsoft.com/library/ms742196(v=vs.100).aspx

http://msdn.microsoft.com/en-us/library/system.windows.media.rendercapability_members.aspx

[ 更新 ]

RenderCapability.IsPixelShaderVersionSupported - 获取一个值,该值指示是否支持指定的像素着色器版本.

RenderCapability.IsShaderEffectSoftwareRenderingSupported - 获取一个值,该值指示系统是否可以在软件中呈现位图效果.

RenderCapability.Tier - 获取一个值,该值指示当前线程的呈现层.

RenderCapability.TierChanged - 在为当前线程的Dispatcher对象更改呈现层时发生.

RenderCapability.Tier >> 16

渲染第0层 - 无图形硬件加速.DirectX版本级别低于7.0版.

渲染第1层 - 部分图形硬件加速.DirectX版本级别大于或等于7.0版,小于9.0版.

渲染第2层 - 大多数图形功能都使用图形硬件加速.DirectX版本级别大于或等于9.0版.


确定需要移16位 - > RenderCapability.Tier >> 16

2> user259509..:

.NET 4.0提供了在代码中强制进行软件渲染的功能:

public partial class App : Application 
{    
    protected override void OnStartup(StartupEventArgs e)    
    {         
        if (WeThinkWeShouldRenderInSoftware())            
            RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;    
    }
}

有关更多信息,请参阅此帖子.



3> Chasler..:

基于RenderingTier链接,这里有一些代码:

        logger.InfoFormat("WPF Tier = {0}",RenderCapability.Tier / 0x10000);
        RenderCapability.TierChanged +=
            (sender, args) => logger.InfoFormat("WPF Tier Changed to {0}",
                                                RenderCapability.Tier / 0x10000);

我还在测试和研究这个问题.查看我发现的未来编辑/答案.



4> cplotts..:

也许以下内容可以帮助你解决问题的第二部分,也就是说,你可以强制一个渲染管道覆盖另一个:

您可以更改注册表设置以禁用硬件加速并强制软件呈现始终发生.我们经常使用它来查看我们看到的特定问题是否与视频驱动程序有关.作为我所谈论的一个例子,请参阅此WPF论坛帖子.

这里需要注意的一件显而易见的事情是,这会影响所有 WPF应用程序,实际上只应用于测试目的.

要禁用硬件加速:

[HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics]
"DisableHWAcceleration"=dword:00000001

要启用硬件加速:

[HKEY_CURRENT_USER\Software\Microsoft\Avalon.Graphics]
"DisableHWAcceleration"=dword:00000000

查看此MSDN链接以获取更多信息.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有