こんにちは、エンジニアのオオバです。
とあるパフォーマンスを検証するために、
CPU・GPU使用率と1フレームにかかる時間を計測するために
Xcodeで実機プロファイリングした時に起きた問題です。
キャプチャの通り、GPUのフレームタイムは表示されますが、CPUの方は0sのまま。
諸々調査した結果、Unityビルド時のGraphicsAPIの設定が原因でした。
プラグインの関係で、このようにOpenGLES2に設定しています。
この状態ではCPUのフレームタイムは表示されません。
- Auto Graphics APIにチェックを入れる
- OpenGLES2とMetalの順番を逆にしてMetalを優先させる
上記どちらか一方の修正で直ります。
またOpenGLES3も選べますが駄目でした。
要は現状のXcodeのバージョンではMetal専用機能のようです。
そもそもなぜフレームタイムを知りたいのか?
なぜCPU・GPUのフレームタイムをチェックするかというと、かかる時間に格差がある場合fpsの低下につながるからです。
1フレーム描画するためにはCPUの処理が完了してからGPUの処理に移ります。
仮にGPUの処理時間が大幅にCPUを上回っていたら、CPUはGPUの処理が終わるのを待たなければならないため、fpsが下がりカクツいてしまいます。
できるだけCPUとGPUにかかる時間を同じくらいになるように心がけたいところです。
この記事が気に入ったらフォローしよう
オススメ記事
検証環境
- Unity5.4.2f1
- Xcode 8.1