WPF Rendering 2(硬件加速、软件加速)
第二天(11/16/2010)
step 2: abstract
1. RenderCapability 类:
Enables WPF applications to query for the current rendering tier for their associated Dispatcher object and to register for notification of changes.
RenderCapability.Tier 属性:Gets a value that indicates the rendering tier for the current thread
返回值 |
呈现层 |
说明 |
---|---|---|
0x00000000 |
0 |
没有图形硬件加速可用于设备中的应用程序。 |
0x00010000 |
1 |
部分图形硬件加速在视频卡中可用。这对应于高于或等于 7.0 并且低于 9.0 的 DirectX 版本。 |
0x00020000 |
2 |
呈现层的值为 2 意味着,如果必要的系统资源尚未耗尽,则 WPF 的大部分图形功能应使用硬件加速。这对应于高于或等于 9.0 的 DirectX 版本。 |
2. RenderOptions 类:
Provides options for controlling the rendering behavior of objects.
RenderOptions.ProcessRenderMode 属性:Specifies the render mode preference for the current process.
说明:
请使用 ProcessRenderMode 属性来强制为当前进程进行软件呈现。如果改变软件呈现首选项,您可以避免很多在 WPF 应用程序中出现的并由外部问题引发的呈现问题。
在应用程序启动过程中,如果您的应用程序检测到呈现问题,如较慢的帧速率,您可以将呈现模式设置为仅软件。此外,您可能希望在应用程序运行时启用用户设置。
SoftwareOnly 的存在会覆盖 RenderMode 设置。软件呈现的优先顺序为:
- DisableHWAcceleration 注册表项
- ProcessRenderMode
- RenderMode(每个目标)
3. HwndTarget 类:
表示到支持可视化撰写的窗口句柄的绑定
HwndTarget.RenderMode 属性:获取或设置由此 HwndTarget 引用的窗口的呈现模式,RenderMode 值之一,用于指定当前的呈现模式。默认值为 RenderMode.Default
例:
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改变时触发