我的GUI遇到了问题。
我的GUI中有多个部分。
第一个用于图像(从500x500到3000x3000,每秒最多更新4次)
第二个是主菜单
第三个按钮具有关于图像的选项。我没有立刻显示所有这些,我滚动浏览几个菜单,我只渲染那些可见的菜单。 (otpions的一个例子是图像的像素大小)
我在一个800x800px大的Viewbox中显示图像。我使用Stretch="{Binding Path=StretchMode}"
在框内拉伸图像
我得到的图像是某种流。我每秒都会得到多张图像。
现在,当我显示图像时,第一个GUI部分工作正常(无论图像大小如何),但其他部分有时会有一个沉重的framedrop。我将举几个例子:
示例1:
图像大500x500像素。我可以在没有framedrop的情况下工作,整个gui更新正确。
示例2:
图像尺寸为1500x1500像素。我可以在没有Framedrop的情况下工作,整个gui更新正确。
示例3:
图像大小为2500x2500像素。图像更新速度很快,但GUI的其余部分的帧数从60 fps到fps,有时甚至达到1 fps。
我对这个问题的看法是:
我希望你能给我一些想法,为什么GUI有这种行为。 如果您需要代码,请告诉我。
我没有使用虚拟机。 在Windows 7 64位和Windows 8.1 64位上出现此问题(在Windows 10上不是testet) 我的硬件不同。问题出现在我的笔记本电脑上(英特尔i7-4702MQ @ 2.2 Ghz,8 gb ddr ram,英特尔主板显卡)以及不同规格的工作电脑(最高的是:带有3.5 Ghz的Intel Xeon,128 GB DDR4 Ram和一个Titan X和一个4k监视器)
答案 0 :(得分:0)
EDIT1:应该使用进程资源管理器(来自Sysinternals)作为一个低悬的水果,看看哪些(如果有的话)视频资源的消费量很高。进程资源管理器中有一个选项卡/区域用于查看图形资源。在进程资源管理器中,您可以执行“选择列”并添加GPU资源以便于查看。尝试是一个很好的角度。
我想冒昧地猜测我们正在处理
带有DPC数据的ETW跟踪可能会有所帮助。另外你没有提到你是否在虚拟机中,虚拟机会使任务管理器反映CPU上不准确的资源消耗。
如何收集此类跟踪的示例如下:https://blogs.technet.microsoft.com/jeff_stokes/2012/09/18/how-to-collect-a-trace-for-audio-or-video-problems-in-windows-7/
无论如何,我怀疑您正在查看内核驱动程序或IPC / DPC问题,而不仅仅是原始CPU消耗。我认为需要提供更多数据。 (硬件规格,使用的操作系统,VM /不)。