WPF Rendering 3(硬件加速、软件加速)之:Performance profiling-Perforator

第三天(11/17/2010)

step 3: Practice
1. 找一个Animation的demo(要求绚一点的,像素丰富,并将动画速度调快,以提高画面显示难度),在其中加入一个计时器,每隔一段时间修改当前进程的RenderOptions.ProcessRenderMode, 代码如下:

 
  

Timer timer
= new Timer();
timer.Interval
= 500 ; // 半秒改变一次
timer.Enabled = true ;
timer.Elapsed
+= new ElapsedEventHandler(changeRenderMode);
timer.Start();
// 执行动画

// 改变呈现方式的函数
void changeRenderMode( object sender, ElapsedEventArgs e)
{
if (RenderOptions.ProcessRenderMode == RenderMode.Default)
{
RenderOptions.ProcessRenderMode
= RenderMode.SoftwareOnly;
}
else
{
RenderOptions.ProcessRenderMode
= RenderMode.Default;
}
}

 

 2. 运行以上函数,并运行windows sdk 中的的工具:Performance profiling-Perforator,将以上进程加入到监视内容,可以看到类似以下效果:

 

从中我们可以看出software rendering 和hardware rendering的交替进行

3. 从实验来看,在程序运行的时候修改注册表的值(见前面的两篇文章)对程序的软硬件呈现没有影响,或许需要重启程序或者重启机器什么的?以后需要的时候再验证吧!

 

更正:

   在上面的试验中,我曾以为修改注册表的值对rendering是没有影响的,后来发现这个想法是错误的。之所以在运行时修改注册表不会改变呈现方式(而不是像修改RenderingOption那样会立即改变呈现方式),是因为在窗口出现出来之前,应用程序只会读一次注册表的值,并以此为依据,也就是说,我们可以在窗口出现之前改变注册表的值来对呈现方式造成影响,而后在程序重启之前就没有机会再通过注册表改变了。例如,可以在App.cs中加入一下代码:

 
  
protected override void OnStartup(StartupEventArgs e)
{
// Enable hardware accelration
EnableHWAcceleration();
base .OnStartup(e);
}

// Change the RegistryKey value to enable hardware accelration
public void EnableHWAcceleration()
{
RegistryKey registryKey
= Registry.CurrentUser.OpenSubKey( @" SOFTWARE\Microsoft\Avalon.Graphics\ " , true );
if (registryKey != null && registryKey.GetValue( " DisableHWAcceleration " ).ToString() == " 1 " )
{
registryKey.SetValue(
" DisableHWAcceleration " , 0 );
}
}

这样可确保电脑启用硬件加速,

同时,如果修改语句为:

registryKey.SetValue("DisableHWAcceleration", 1);
 这样便禁用了硬件加速,在这种情况下,即使在程序中设置:

 RenderOptions.ProcessRenderMode == RenderMode.Default;

这样也无法启用硬件加速(参考前一篇中关于优先级的内容)

 

转载于:https://www.cnblogs.com/mycom/archive/2010/11/17/1880093.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值