最近在重温Android的一些基础知识,看到SurfaceView的原理中有用到双缓冲机制,那么接下来我将带领大家学习什么是双缓冲模式。
什么是双缓冲模式?
通俗来讲就是有两个缓冲区,一个后台缓冲区和一个前台缓冲区,每次后台缓冲区接受数据,当填充完整后交换给前台缓冲,这样就保证了前台缓冲里的数据都是完整的。
双缓冲模式常用来做帧缓冲区交换。我们几乎可以在任何一个图形API中找到双缓冲模式的应用。如OpenGl中的 swapBuffers() 函数,Android中SurfaceView双缓冲机制。
那么SurfaceView中的双缓冲机制是什么样子呢?
看下图:

可以看出来SurfaceView的双缓冲机制还是稍有不同,前/后台缓冲区交替成为后/前台缓冲区。同时需要注意每次在绘制的时候都需要清除Canvas画布,不然会出现画面叠加的现象。
那么这样有什么好处呢?
- 提高渲染效率
- 可以避免刷新频率过高而出现的闪烁现象
网友评论