如何以编程方式检测屏幕撕裂?

Posted

技术标签:

【中文标题】如何以编程方式检测屏幕撕裂?【英文标题】:How to detect screen tearing programmatically? 【发布时间】:2014-07-11 22:14:32 【问题描述】:

假设我已经录制了监视器屏幕的高清视频,我想验证是否有任何screen tearing 发生。我该怎么做?

我在这里想到了两种幼稚的方法 -

1] 我可以将一帧与前一帧进行比较,并应用“motion estimation”算法来检测帧的一部分是否向左/向右移动,而另一部分根本没有改变。

2] 一种更简单的方法是将当前帧与前一帧进行比较,如果有任何撕裂,则帧的一部分将完全相同(并保持不变)。

什么是更好的检测方法?

更新: 我认为第二种方法会产生很多误报并且不可行。

【问题讨论】:

【参考方案1】:

如果您可以控制正在显示的内容,则它会更容易。我建议你做 FCAT 之类的事情(或者只使用 FCAT):参见 http://www.anandtech.com/show/6862/fcat-the-evolution-of-frame-interval-benchmarking-part-1/2 和 http://techreport.com/review/24703/amd-radeon-hd-7990-graphics-card-reviewed/2 和 http://www.geforce.com/hardware/technology/fcat

简短描述:它在每个渲染帧的左侧放置一个不同的颜色条。在捕获中,您可以轻松检测到眼泪在哪里。

【讨论】:

感谢@Dithermaster。我认为这是检测屏幕撕裂的唯一可靠方法。 嗨@asloob。您是否以编程方式解决了您的问题?我现在面临同样的问题,我很无助

以上是关于如何以编程方式检测屏幕撕裂?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式从 SwiftUI 列表中删除行并刷新列表视图?

如何以编程方式检测Windows Phone 8.1操作系统版本?

iOS - Apple TV - 以编程方式检测 Apple TV 上的节目

在 Android 中以编程方式启用/禁用屏幕镜像。 [根]

如何在 Android 上以编程方式截取屏幕截图? [复制]

ConstraintLayout:如何以编程方式将屏幕划分为屏幕高度的两个相等部分