gpt4 book ai didi

c# - System.Windows.Media.RenderCapability.Tier 不返回渲染模式

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:23 24 4
gpt4 key购买 nike

我用 System.Windows.Media.RenderCapability.Tier在我的应用程序的诊断面板中显示当前渲染模式。如果我通过以下代码强制应用程序 (3.5sp1) 更改渲染模式

HwndSource hwndSource = PresentationSource.FromVisual(visual) as System.Windows.Interop.HwndSource;
HwndTarget hwndTarget = hwndSource.CompositionTarget;
hwndTarget.RenderMode = renderMode;

System.Windows.Media.RenderCapability.TierChanged 均未触发,System.Windows.Media.RenderCapability.Tier 属性也未更改。但是,更改会应用于应用程序。如果我看 Perforator ,渲染模式已更改为所需模式。

虽然我在很多地方都发现 System.Windows.Media.RenderCapability.Tier 可以用来检测当前渲染状态(也是 msdn,参见 this ),但似乎,System.Windows.Media.RenderCapability仅提供有关功能的信息,而不提供有关当前模式的信息。如果我查看类(class)的名称,这也很有意义。

是否有其他来源可以了解实际的 wpf 内容是如何呈现的,还是我做错了什么?

最佳答案

只需将 RenderCapability.TierHwndTarget.RenderMode 组合在一起,您就会得到您想要的:

  • RenderCapability.Tier 告诉你当前显卡支持什么
  • HwndTarget.RenderMode 告诉您 WPF 是否实际使用 GPU

RenderCapability.Tier 会在 Direct3D 表面切换到新视频卡(例如在显示器之间拖动窗口或将显示切换到新显示器)时更改并触发 TierChanged。

HwndTarget.RenderMode 仅由用户代码更改,但没有更改时的通知机制。如果你只将它设置在一个地方,你可以简单地从那里通知,否则你可能需要使用计时器来定期检查它。

基本上,如果 HwndTarget.RenderMode==RenderMode.Default 和 RenderCapability.Tier 足够高,您就有硬件加速。

关于c# - System.Windows.Media.RenderCapability.Tier 不返回渲染模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3060329/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com