我的 GUI 遇到了问题。我的 GUI 中有多个部分。第一个是用于图像(从 500x500 到 3000x3000,它必须每秒更新 4 次) 第二个是主菜单 第三个是带有图像选项的按钮。我不会一次显示所有这些,而是滚动浏览几个菜单,只渲染可见的那些。(选项的一个例子是图像的像素大小)我在一个 800x800px 大的 Viewbox 中显示图像。我用Stretch="{Binding Path=StretchMode}"
我得到的图像是某种流来拉伸盒子内的图像。我每秒得到多个图像。
现在,当我显示图像时,第一个 GUI 部分工作正常(无论图像大小如何),但其他部分有时会出现严重的掉帧。我会举一些例子:
示例 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)我的硬件不同。问题出现在我的笔记本电脑(Intel i7-4702MQ @2.2 Ghz、8 gb ddr ram、intel 显卡)和不同规格的工作电脑上(最高的是:Intel Xeon with 3.5 Ghz、128 GB DDR4 Ram 和 Titan X 和4k 显示器)
编辑:抱歉,堆栈没有足够高的分数来发表评论,所以在这里评论内容。
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- windows-7 中的问题/
无论如何,我怀疑您正在考虑内核驱动程序或 IPC/DPC 问题,而不仅仅是这里的原始 CPU 消耗。我认为需要提供更多数据。(硬件规格、使用的操作系统、虚拟机/非虚拟机)。
| 归档时间: |
|
| 查看次数: |
208 次 |
| 最近记录: |