什麼是離屏渲染?什麼情況下會觸發?該如何應對?

2022-08-19 04:57:12 字數 660 閱讀 4922

離屏渲染出發的場景有以下:

為什麼要有離屏渲染?

離屏渲染的代價很高,想要進行離屏渲染,首選要建立乙個新的緩衝區,螢幕渲染會有乙個上下文環境的乙個概念,離屏渲染的整個過程需要切換上下文環境,先從當前螢幕切換到離屏,等結束後,又要將上下文環境切換回來。這也是為什麼會消耗效能的原因了。

由於垂直同步的機制,如果在乙個 hsync 時間內,cpu 或者 gpu 沒有完成內容提交,則那一幀就會被丟棄,等待下一次機會再顯示,而這時顯示屏會保留之前的內容不變。這就是介面卡頓的原因。

為什麼要避免離屏渲染?

cpugpu在繪製渲染檢視時做了大量的工作。離屏渲染發生在gpu層面上,會建立新的渲染緩衝區,會觸發opengl的多通道渲染管線,圖形上下文的切換會造成額外的開銷,增加gpu工作量。如果cpugpu累計耗時16.67毫秒還沒有完成,就會造成卡頓掉幀。

圓角屬性蒙層遮罩都會觸發離屏渲染。指定了以上屬性,標記了它在新的圖形上下文中,在未癒合之前,不可以用於顯示的時候就出發了離屏渲染。

離屏渲染消耗效能的原因

哪些操作會觸發離屏渲染?

mysql什麼情況下會觸發表鎖

在上面講到的併發事務處理帶來的問題中,更新丟失 通常是應該完全避免的。但防止更新丟失,並不能單靠資料庫事務控制器來解決,需要應用程式對要更新的資料加必要的鎖來解決,因此,防止更新丟失應該是應用的責任。髒讀 不可重複讀 和 幻讀 其實都是資料庫讀一致性問題,必須由資料庫提供一定的事務隔離機制來解決。資...

什麼情況下會初始化類

都什麼情況下會初始化類 public class a static public void run public void service public class b extends a public static void main string args 答案 static block a s...

C 什麼情況下會產生臨時變數

臨時變數是只在呼叫期間有效,具有常性的一種變數。在返回值以值傳遞 傳值和傳指標 的形式返回時,會生成臨時變數。int sum int a,int b 編譯器會將結果a b的值拷貝給臨時變數,最終返回的是臨時變數 在函式呼叫中,如果形參是引用的型別的情況下 當實參和形參的型別不匹配會產生臨時變數 st...