LoginSignup
35
31

More than 5 years have passed since last update.

iOSのFrameworkがどのようにCPUとGPUを使い分けるのか

Posted at

iOSアプリ開発においてパフォーマンスを気にするなら、標準Frameworkのうちどのクラスがレンダリングの際にCPUに依存してしまうのかを理解するのはすごく大事なことだと思います。少し古いですが参考になる記事を見つけたので重要だと感じた部分をピックアップします。
https://robots.thoughtbot.com/designing-for-ios-graphics-performance
とても有名な記事だと思います。(AppleのUIKit開発者Andy Matuschakが情報提供してくれた?)

UIKitの構造

  • UIKit
    • CoreAnimation
      • OpenGLES
        • GPUを使用
        • Cで書かれている
      • CoreGraphics
        • CPUを使用
        • Cで書かれている

Offscreen drawing とは

GPUに渡す前に、バックグランドでCPUを使ってビットマップを生成する処理。

Offscreen drawing が起こる条件

  • CoreGrapics(接頭語がCGのクラス)
  • drawRectメソッド
  • shouldRasterizeプロパティがYESのCALayer
  • setMasksToBoundsを使ってマスクしているか、setShadow*を使って影をつけているCALayer
  • CoreTextを含む、画面に表示されるあらゆるテキスト
  • GroupOpacity(UIViewGroupOpacity)
35
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
31