WebGLをVirtualBox上のWebブラウザで動作させるのは難しいようですね。いろいろと調べてみましたが、なかなかうまい方法がありません。いまのところ手元のマシンでは成功できていません。
WebGLチェックには http://webglreport.com/ へアクセスします。使えないブラウザだとそのメッセージが表示され、使えるブラウザだと図形が表示されます。
ホスト側のWebブラウザではWebGLを動かせているのですが、ゲスト側ではできていません。WebGLに対応したビデオドライバになっていないということなので、そこを何とかすれば良いのですが…
ホスト側ではMacBook Pro 13-inch, Mid 2012 Intel HD Graphics 4000を使っています。
VirtualBox
設定でディスプレイのビデオで「3Dアクセラレーションを有効」にチェックをいれてあります。
Ubuntu
Ubuntuで下記コマンドを実行すると、OpenGLなどには対応できているように見えます。
$ /usr/lib/nux/unity_support_test -p OpenGL vendor string: Humper OpenGL renderer string: Chromium OpenGL version string: 2.1 Chromium 1.9 Not software rendered: yes Not blacklisted: yes GLX fbconfig: yes GLX texture from pixmap: yes GL npot or rect textures: yes GL vertex program: yes GL fragment program: yes GL vertex buffer object: yes GL framebuffer object: yes GL version is 1.4+: yes Unity 3D supported: yes
下記のパッケージが必要です。
$ sudo apt-get install mesa-utils
下記も入れてみています。
$ sudo apt-get install libosmesa6 $ sudo apt-get install mesa-utils-extra
Chrome
ChromeでWebGLを動作させるためには「chrome://flags」を開いて、「Override software rendering list」をEnableとします。実際のGPUチェックには「chrome://gpu/」を開きます。
Chrome on Linux with WebGL and all the hardware acceleration stuff | Born in bronx, mastro’s blog: http://borninbronx.wordpress.com/2012/11/08/chrome-on-linux-with-webgl-and-all-the-hardware-acceleration-stuff/ とか、Issue 174176 – chromium – WebGL doesn’t work under Intel HD 4000 on Ubuntu 12.04 – An open-source project to help move the web forward. – Google Project Hosting: http://code.google.com/p/chromium/issues/detail?id=174176とか見ていろいろ設定してみましたが、ダメで動きませんでした。
Pass-throughを使う
VirtualBoxのマニュアルのChapter 9. Advanced topics に記載があります。http://www.virtualbox.org/manual/ch09.html#pcipassthrough
VirtualBoxの拡張パックを導入するとパススルーという機能が使えるようになるので、これでいけないか調べてみました。個人が評価用に使う分には無償で利用可能です。VirtualBoxへ拡張パックを導入するだけでなく、ゲストOSの方でも設定が必要です。
Ubuntuでは/etc/default/grubを編集して下記を追加。
GRUB_CMDLINE_LINUX="intel_iommu=on,pass-through"
よく調べていませんが、統合環境のビデオカードを無効とするにはigfx_offを指定するのが良いようです。ビデオカードを別途つけているデスクトップマシンとかはこの指定が必要なのかもしれません。
GRUB_CMDLINE_LINUX="intel_iommu=on,igfx_off,pass-through"
GRUBの設定変更は update-grub2 で更新できるので、このコマンドを実行してから再起動します。起動すると、下記コマンドで情報が取得できます。
$ lspci 略 00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter 略
VGA互換コントローラでInnoTex Systemberatung GmbHが見えています。これを、Intel HD Graphics 4000のコントローラにしたいのですが…
下記でも何らかの情報がでるらしいです。
$ dmesg|grep -i mmu $ dmesg|grep -i PCI-DMA $ dmesg|grep -i DMAR
と、いろいろ調べたのですが、ダメだったのであきらめました。ちなみに、Firefoxも動かなかったですね。about:configでlibosmesa6のライブラリへのパスを指定した変数を追加すれば動くという情報もあったのですが、手元では動きませんでした。
- 実践プログラミングWebGL HTML & JavaScriptによる3Dグラフィックス開発 (Programmer’s SELECTION)
- HTML5+JavaScript+CSS+WebGLによる3D Web コンテンツ制作
- 「WebGL/three.js」ではじめる3D‐CGプログラミング (I・O BOOKS)
- JavaScriptグラフィックス ―ゲーム・スマートフォン・ウェブで使う最新テクニック
- OpenGL 4.0 シェーディング言語 -実例で覚えるGLSLプログラミング