フレームレートが定期的に一瞬落ちる現象が起きた。
外部モニタに接続するとなぜか起きない。
ガベコレっぽい雰囲気を感じて原因を探ったが、
コードを変更しても改善はなかった。
ふと、自分のMacBook Proにグラボが2ついて、
自動で切り替わる事を思い出す。
設定は
システム環境設定 > 省エネルギー > グラフィックスの自動切り替え
にある。
試しにチェックを外すと、、、
滑らかになった!!
外部モニタにつなぐとグラボを切り替えるらしい。
だから外部モニタだと問題が起きなかったんだ。。
さて、jsでmacのグラボの切り替えが直接できるはずもないので、
方法を考えた。
負荷がかかりそうだと判断したり、
OpenGLを使ったアプリを立ち上げると切り替わるらしいので、
まず最初に思いつくのは、WebGLっしょ。
window.onload = ->
c = document.createElement 'canvas'
break for key in ["experimental-webgl", "webgl"] when window.MAC_GPU_FIX = c.getContext key
上のコードを入れたら、一発でグラボが切り替わった。
なんの処理をしなくても、WebGLコンテキストを保持してれば良いみたい。
グラボの状態を簡単にチェックできたり、
設定できたりするアプリがあったので、
そちらを入れて動作をチェックした。
gfxCardStatus
http://codykrieger.com/gfxCardStatus
やれやれだぜ。