百科狗-知识改变命运!
--

Android基础-秒懂SurfaceView的双缓冲机制

乐乐1年前 (2023-12-03)阅读数 10#综合百科
文章标签内存数据

最近在重温Android的一些基础知识,看到SurfaceView的原理中有用到 双缓冲机制 ,那么接下来我将带领大家学习什么是双缓冲模式。

什么是双缓冲模式?

双缓冲模式 常用来做帧缓冲区交换。我们几乎可以在任何一个图形API中找到双缓冲模式的应用。如OpenGl中的 swapBuffers() 函数,Android中SurfaceView双缓冲机制。

那么SurfaceView中的双缓冲机制是什么样子呢?

Android基础-秒懂SurfaceView的双缓冲机制

看下图:

可以看出来SurfaceView的双缓冲机制还是稍有不同,前/后台缓冲区交替成为后/前台缓冲区。同时需要注意每次在绘制的时候都需要清除Canvas画布,不然会出现画面叠加的现象。

那么这样有什么好处呢?

我来给你说一下计算机cpu具体处理数据的一个大致的流程,或许你能理解点什么吧:

数据的处理是由CPU执行的,内存的容量都很有限,所以不可能长期存放大量的数据,因此采用缓冲这一机制来解决这个问题。CPU处理数据的速度很快,所以只有直接去内存去数据才能和CPU的处理速度匹配(CPU从内存取数据速度快,用时短),但是内存不可能随时都存放着CPU下一秒钟可能会用到的数据,因为内存的容量太小。因此,在CPU和内存之外引入了缓冲的概念,缓冲顾名思义就是用在数据交换的时候起一个缓冲的作用,也就是在内存和外设之间的另一条通道,这样就可以实现CPU和内存之间交换数据的同时,内存可以和外设之间进行数据的交换,把CPU需要处理的数据先从外设读取到内存,再从内存读取到CPU,这样就可以解决各种设备的容量和速度匹配之间的问题。当然,严格来说,在CPU和内存之间还有一种叫做寄存器的设备,这种设备容量很小,但是读取速度比内存要快,所以通常都是把CPU用到的数据放到寄存器里面,CPU直接到寄存器读取数据的。也就是说CPU可以去寄存器读取数据,也可以去内存读取数据(先去寄存器读取数据,如果寄存器里面没有需要的数据,就去内存读取,要是内存还没有需要的数据,那就从外设读到内存,再从内存到CPU),希望这样的描述可以帮到你对这些概念的理解。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)