Mac
HTML5
canvas

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

やれやれだぜ。