概要
Chromeで16を超えるWebGLコンテキストを同時に描画するためのTipsです
結論
Chromeの起動オプションにmax-active-webgl-contexts
を指定するとWebGLの描画コンテキストの上限を変更することができます。
コマンドライン実行の例
以下の例は、コマンドラインでWebGLコンテキストの上限を32にする例です。
open -a /Applications/Google\ Chrome.app --args --max-active-webgl-contexts=32
GUIで実行する
以下のサイトを参考にしながら、上記の処理をGUIから実行する方法をまとめました。
Windowsの場合
Windowsの場合は、新規にChromeの起動ショートカットを作成し、そのリンク先の中に起動オプションを書くことでGUI実行できます。
macOSの場合
macOSの場合は、Automatorでアプリケーションを作成し、シェル実行に前述のコマンドを登録し、ショートカットを作成することで、GUI実行ができるようになります。
経緯
Chromeで16を超えるWebGLコンテキストを同時に描画しようと試みたところ、WARNING: Too many active WebGL contexts. Oldest context will be lost.
という警告が出力され、古いWebGLコンテキストがら削除されてしまいました。
WebGLで画像を表示する際の注意点(WebGLコンテキストの最大数)
上記のサイトによると、Chromium系のブラウザ(Chromium, Chrome, Edge, etc...)のWebGLコンテキストの最大数は16に制限されており、対処方法がないかの調査に至りました。
まとめ
Chromeにmax-active-webgl-contexts
をつけることで、WebGLコンテキストの上限を変更することができました。しかしながら、この手法は自身がコントロールできる環境でしか実行できないため、公開サービスとして活用する場合はWebGLの描画を制御する処理が必要となります。
参考