什么是离屏渲染?

当前屏幕渲染:指的是GPU的渲染操作是在当前用于显示的屏幕缓冲区进行.

离屏渲染:指的是GPU在当前屏幕缓冲区以外开辟一个缓冲区进行渲染操作.

当前屏幕不需要额外创建新的缓存,也不需要开启新的上下文,相对于离屏渲染性能更好.但是受当前屏幕渲染的局限因素限制(只有自身上下文,屏幕缓存有限等),当前屏幕渲染有些情况下的渲染解决不了的,就会用你那个到离屏渲染.

相比于当前屏幕渲染,离屏渲染的代价是很高的,主要体现在两个方面:

1.创建新的缓冲区:要想进行离屏渲染,首先要创建一个新的缓冲区.

2.上下文切换:离屏渲染的整个过程,需要多次切换上下文环境.首先是从当前屏幕切换到离屏,等到离屏渲染结束后,将离屏缓冲区的渲染结果显示到屏幕上,又需要将上下文环境从离屏切换到当前屏幕,而上下文环境的切换是需要付出很大代价的.

最后由于垂直同步机制,如果在一个Hsync时间内,CPU或者GPU没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再显示,而这时显示屏会保留之前的内容不变.这就是界面卡顿的原因.

为什么要有这套机制呢?

有些被认为不能直接呈现于屏幕,而需要在别的做额外的处理预合成.图层属性的混合体没有预合成之前不能直接在屏幕中绘制,所以就需要屏幕外渲染.屏幕外渲染并不意味着软件绘制,但是它意味着涂层必须在被显示之前在一个屏幕外上下文中被渲染(无论CPU还是GPU).

直接切圆角方式就会造成离屏渲染.

你可能感兴趣的:(什么是离屏渲染?)