指针抖动的问题: 人眼有视觉残留,当帧率低的时候,前后两个指针位置处有比较大的空隙,我们就会在两个指针中间看到空隙,感觉上就是抖动。
缓解抖动的措施是提高帧率,或者使用运动模糊;
提高帧率:让前后帧的指针位置更连续,视觉上就会改善。(这个需要优化帧率)
运动模糊:可以理解为通过增加指针的拖影,来填充前后帧指针处的空隙,以此来改善视觉效果。 (会消耗较多的GPU资源)
指针的撕裂: 这是显卡绘制帧率和显示器刷新率不匹配导致的。这个问题在ARM的GPU,和PC机显卡上都是一个比较普遍的问题。
这个现象和GPU的硬件,驱动,以及应用都会有一定的关系。
如果仔细观察,画面撕裂是水平方向上的. 对指针而言,指针越是接近水平位置,撕裂越是不容易发生。
理论上,只能开启垂直同步(VSNYC)才可以解决(这个需要GPU驱动支持,目前GPU驱动是厂商维护,我们只是使用). 在现有的驱动中,没有找到相关的设置。
另外, 开启VSNYC, 一方面消耗GPU资源,另一方在绘制帧率跟不上显示器刷新率的情况下,会有跳帧和卡顿。
由于目前的LVDS刷新率是60,那么在绘制帧率达不到60的情况下,就比较容易产生跳帧和卡顿。
画面撕裂的分析可以参考下面的链接。
http://www.cnblogs.com/dbwdt/archive/2016/03/15/5279286.html
如果你的游戏的FPS可以一直稳定的大于显示器的刷新率,VSync是个不错的东西。但是如果FPS忽大忽小。VSync就是让人烦的东西。如果你的游戏FPS一直都小于刷新率的话,实际的FPS要远远小于显示卡可以显示的FPS.看上去就象是VSync降低了你的FPS,但是从技术角度讲,不是应为图像太复杂,而是因为VSync就是这样工作的。
也不是说所有的希望都没有了。现在的triple-buffering技术可以用来解决这个问题。让我们再来看刷新率75。FPS50的例子。第一桢在显 示缓冲,第二桢的2/3在后备缓冲。显示器刷新第一桢第一次被显示,在后备缓冲里描画第二桢的剩下的1/3,在第二后备缓冲里描画第三桢的1/3(因为我 们有三级缓冲了)。显示器再次刷新第一桢第二次被显示,第二桢放入在显示缓冲,第三桢的的1/3放入后备缓冲,第二后备缓冲里描画第三桢剩下的2/3。接 下来显示器再次刷新的时候,第二桢被显示,第三桢就可以放入显示缓冲,这样我们就可以在3次刷新中得到2桢的画面。也就是刷新率的2/3,也就是 50FPS.triple-buffering理论上讲可以避免缓冲写入是带来的延迟现象,这样就不会浪费时间。但是triple-buffering并 不是适用于所有的游戏。实际上它并不是普及(这个文章可能写的太早,现在triple-buffering已经很普及了),而且它也会影响显示卡的性能, 应为它需要更多的显示内存,需要更多时间在内存之间降数据拷贝来拷贝去。但是triple-buffering确实是一个很好的方法,既可以消除撕裂画面 又可以不像普通VSync一样影响你的FPS