我必须运行一个wpf-应用程序,在一个环境中,所有相同的戴尔-pc与英特尔gma 3000图形芯片(onbard,Q 963/Q 965)。该应用程序只使用软件呈现(由RenderCapability.Tier-property和Performance的射孔器声明)。
在所有这些机器上,安装了DirectX 9c,DXDiag状态在许多机器上,但不是在所有这些机器上,直接3D和直接绘制加速被激活。我还检查了注册表,如果这些机器的设置禁用了wpf-hw呈现,但情况并非如此。在一台机器上,我还更新了视频驱动程序和dx,但没有成功。
如果我正确地解释了资源,那么在安装了DirectX 9c (并且D3D-加速度是活动的)的pc上,也会发生wpf硬件渲染。但是在上面的机器上安装了DX9c,但是没有hw渲染。根据丹尼尔伯尔尼的职位提供的规范,我也认为至少在第1层上渲染必须是可能的和主动的。
我唯一不关心的就是内存,因为图形系统动态分配系统内存,没有自己的内存。我如何才能找到一个特定的图形芯片必须支持硬件渲染的wpf或不。是因为active DirectX 9c也支持harware呈现,还是还有其他必须完全满足的需求,而这些需求又是dx9c所需要的呢?第二个问题是,如果wpf通过dx呈现,这是通过直接3D完成还是直接绘制使用。关于这个主题有什么好的文档吗?
事实证明,在客户个人电脑的直接3D加速是活跃的(在DXDiag),但是没有功能。测试直接3d的测试程序总是以错误结尾。这使得问题变成了一个支持问题,我将在涉及的公司支持部门开一张票。
关于在硬件中使用dx的哪个组件来呈现wpf的问题可以这样回答:呈现是通过媒体集成层(MIL)完成的。如果DirectX (适当的版本)是可用的和可操作的,则MIL直接将所有呈现命令写入D3D。此外,DirectShow (或其后继)用于处理视频。媒体集成层是非托管代码,似乎很少有关于媒体集成层的文档。
上述事实使我认识到,一个活动的DirectX9c是一个明确的指标,hw渲染的wpf可以,并将发生。因此,可以通过检查芯片是否支持dx9c (对于第2层渲染)来回答哪个芯片支持hw渲染的问题。需求规范可以找到这里 (感谢Daniel )。
更新
在上述情况下,d3d和硬件呈现无法工作的原因是,一个应用程序注册了镜像视频驱动程序,以提供远程终端服务,如net meeting to (用于远程管理客户端pc的是来自支持部门的软件)。禁用此镜像驱动程序导致功能直接的3d,从而进行WPF硬件渲染。然而,渲染级别只是第1层(我认为是因为视频内存的限制)。
我希望这篇文章能帮助其他有类似问题的人。
这里有一些链接可以进入主题:
WPF体系结构概述,WPF中的硬件加速,介绍Direct2D,高级WPF应用程序性能优化与分析,RenderCapability.Tier不返回呈现模式
发布于 2010-05-30 15:42:52
阅读这个图形绘制层和这个优化WPF应用性能。还请看一下这个工具WPF性能套房
https://stackoverflow.com/questions/2939128
复制相似问题