第二天(11/16/2010)
step 2: abstract
1. RenderCapability 类:
返回值 | 呈现层 | 说明 |
---|---|---|
0x00000000 | 0 | 没有图形硬件加速可用于设备中的应用程序。 |
0x00010000 | 1 | 部分图形硬件加速在视频卡中可用。这对应于高于或等于 7.0 并且低于 9.0 的 DirectX 版本。 |
0x00020000 | 2 | 呈现层的值为 2 意味着,如果必要的系统资源尚未耗尽,则 WPF 的大部分图形功能应使用硬件加速。这对应于高于或等于 9.0 的 DirectX 版本。 |
2. RenderOptions 类:
请使用 ProcessRenderMode 属性来强制为当前进程进行软件呈现。如果改变软件呈现首选项,您可以避免很多在 WPF 应用程序中出现的并由外部问题引发的呈现问题。
在应用程序启动过程中,如果您的应用程序检测到呈现问题,如较慢的帧速率,您可以将呈现模式设置为仅软件。此外,您可能希望在应用程序运行时启用用户设置。
SoftwareOnly 的存在会覆盖 RenderMode 设置。软件呈现的优先顺序为:
- DisableHWAcceleration 注册表项
- ProcessRenderMode
- RenderMode(每个目标)
3. HwndTarget 类:
例:
HwndSource hwndSource = PresentationSource.FromVisual(visual) as System.Windows.Interop.HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = renderMode;
- 可以使用三种方式改变rendering方式,他们的顺序为
- DisableHWAcceleration 注册表项
HKEY_CURRENT_USER\SOFTWARE\Microsoft\Avalon.Graphics\DisableHWAcceleration,0为启用硬件加速,1为禁止硬件加速 - ProcessRenderMode (静态属性,对应每个进程)
RenderOptions.ProcessRenderMode = RenderMode.Default;
RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly; - RenderMode(非静态属性,对每个目标,窗口)
HwndSource hwndSource = PresentationSource.FromVisual(visual) as System.Windows.Interop.HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = renderMode;
- RenderCapability.Tier只指示当前的机器具有多大的能力实现硬件加速,它在当前现实的内容改变显示器现实,或者从这个显示器拖动到另外一个显示器现实的时候会改变
RenderCapability.TierChanged事件会在RenderCapability.Tier改变时触发