iOS性能優化04-卡頓優化02-GPU

  • 儘量減少視圖數量和層次
  • 儘量避免短時間內大量圖片的顯示,儘可能將多張圖片合成一張進行顯示
  • 減少透明的視圖(alpha<1),不透明的就設置opaque為YES
  • GPU能處理的最大紋理尺寸是4096*4096,一旦超過這個尺寸,就會佔用CPU資源進行處理,所以紋理儘量不要超過這個尺寸
  • 儘量避免出現離屏渲染
  • 離屏渲染

    • 在OpenGL中,GPU有2種渲染模式On-Screen Rendering:當前屏幕渲染,在當前用於顯示的屏幕緩衝區進行渲染操作Off-Screen Rendering:離屏渲染,在當前屏幕緩衝區以外新開闢一個緩衝區進行渲染操作
    • 離屏渲染消耗性能的原因需要創建新的緩衝區離屏渲染的整個過程,需要多次切換上下文環境,先是從當前屏幕(On-Screen)切換到離屏(Off-Screen),等到離屏渲染結束後,將離屏緩衝區的渲染結果顯示到屏幕上,又需要將上下文環境從離屏切換到當前屏幕
    • 哪些操作會觸發離屏渲染?光柵化,layer.shouldRasterize = YES遮罩,layer.mask圓角,同時設置layer.maskToBounds = YES、layer.cornerRadius 大於0(考慮通過CoreGraphics繪製裁剪圓角,這個網上例子有很多我就不多說了,大家隨便搜一搜都可以搜到,或者叫美工直接提供圓角圖片)陰影, layer.shadowXXX (但是如果設置了layer.shadowPath就不會產生離屏渲染了,不設置默認是環繞layer添加的)


    iOS性能優化04-卡頓優化02-GPU



    分享到:


    相關文章: