Edited at

Macでcanvas利用時に

More than 5 years have passed since last update.

フレームレートが定期的に一瞬落ちる現象が起きた。

外部モニタに接続するとなぜか起きない。

ガベコレっぽい雰囲気を感じて原因を探ったが、

コードを変更しても改善はなかった。

ふと、自分の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

やれやれだぜ。