ARFoundation初始化时突然出现一帧历史画面或者说画面闪烁
-
症状
在场景中有一个普通相机,普通按钮,点击后创建 ARFoundation 预制体,里面包含了 ARSession 组件,还有用于AR的Camera
然后屏幕会突然闪一下,显示的是0.几秒前的画面 -
排查
- 在界面上打印时间,可以确认确实就是几秒前的画面
- 去掉AR的Camera,此时只有普通相机,仍然会闪烁
- 去掉 ARSession 组件,不会闪烁,说明是 ARSession 问题
- 取消 ARSession 上的 MatchFrameRate ,不会闪烁,说明是 MatchFrameRate 问题
- 排查跟 MatchFrameRate 相关的代码,发现注释掉 ARSession.Update 中的如下代码
则不会闪烁,说明跟设置帧率有关Application.targetFrameRate = subsystem.frameRate; QualitySettings.vSyncCount = 0;
- 最后经过不断试验,确认,当 QualitySettings.vSyncCount 有进行切换,则会进行闪烁,否则不会
比如 打包时 Quality 中设置的 VSync Count = Every V Blank,也就是 QualitySettings.vSyncCount=1
则开启ARSession.MatchFrameRate 会设置 QualitySettings.vSyncCount=0,此时 vSyncCount 的值发生改变
所以会闪烁
-
原因
QualitySettings.vSyncCount 的值发生改变,导致闪烁,估计是值为1和0时的缓冲模式不同文章来源:https://www.toymoban.com/news/detail-745889.html -
解决
保证 QualitySettings.vSyncCount 不会发生改变,有2种办法:文章来源地址https://www.toymoban.com/news/detail-745889.html- 取消 ARSession 上的 MatchFrameRate,如果需要的话,可以进入AR后在代码中设置为true
- 打包时设置 Quality 中设置的 VSync Count = Don’t Sync
到了这里,关于unity画面闪烁问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!