性能优化-避免离屏场景
离屏渲染:丢帧 -> 卡顿
视觉暂留是存在有效时间限制(如果停留时间长度超过时间限制上阀(HSync)就会因失帧出现界面卡顿现象)
CRT电子枪逐行扫描待显示图像(HSync水平同步信号产生的频率) —>获取信息数据CPU计算相关属性—>GPU渲染帧图(对应画面本身的规则数据信息) —>提交进默认(屏幕)缓冲区 —>(视频)控制器控制按照HSync水平同步信号读取帧数据传递给显示器。
显示器显示同步控制器控制(同步带来流畅效果/HSync水平同步信号产生的频率(显示刷新率))。
屏幕缓冲区:与屏幕相关联的内存缓冲区
内存缓冲区直接关联着当前正在渲染的屏幕。
GPU渲染帧图两种存储方式:
规则数据信息 —>提交至当前屏缓冲区:当前屏(缓冲区)渲染
规则数据信息 —>提交至与当前屏无关的新缓冲区:剥 离屏渲染
(1)On-Screen Rendering (当前屏渲染) :指GPU的渲染帧图读取操作是在当前屏缓冲区进行读取。
(2)Off-Screen Rendering (离屏渲染):指GPU在当前屏缓冲区以外的位置全新开辟的某个新缓冲区内进行渲染帧图读取操作。
当前屏渲染的帧图来自于当前屏缓冲区进行读取,不需要额外开辟全新的缓冲区也不需要额外开启全新的上下文,避免了全新的缓冲区的开辟及避免了全新的上下文的开启,减少了2方面的需求内耗,性能更好。
但受当前屏渲染的局限性因素限制(只拥有当前屏默认上下文环境、当前屏缓存区容量有限等),如果某个帧图的数据量很大,当前屏缓存区存放不了需要开辟全新的缓冲区即剥离屏渲染。
剥离屏渲染主要体现两个方面: