VirtualBox

VirtualBoxには3Dアクセラレーションを有効にする機能が用意されている。この機能を有効にすると、ゲストOSにおいてホストのグラフィック機能を活用した3Dレンダリングが可能になる。ただし、すべてのケースで利用できる機能ではなく、いくつかの条件と設定が必要になる。まず、基本的には次の設定や条件が必要になる (VirtualBox 3.2.10の場合)。

  1. ホストOSで3Dレンダリングが可能であること(たとえばNVIDIAのグラフィックチップを搭載し、NVIDIAドライバが動作していること。OSの種類は問わない)
  2. ゲストOSの仮想環境の設定で「3Dアクセラレーションを有効化」にチェックを入れてあること。
  3. ゲストOSにGuest Additionsがインストールされていること。Guest AdditionsのインストールはVirtualBoxのメニューから「デバイス」「Guest Additionsのインストール」を選択してから、ゲストOSに現れるCD内のインストーラを実行すればいい。

ゲストOSの仮想環境設定で3Dアクセラレーションを有効化

サポートされているゲストOSと条件は次のとおり。

  • LinuxゲストではOpenGLによる3Dレンダリングがサポートされている。Linuxカーネル2.6.27以上およびX.Org 1.5以上をサポート。
  • WindowsゲストではOpenGLおよびDirect3D 8/9による3Dレンダリングがサポートされている。サポートしているのはWindows XP 32ビット版ゲストとVista 32ビット版ゲストのみ。

Guest Additionのインストールで注意が必要になる。Windows XP 32ビット版などにGuest Additionをインストールする場合、次の点に注意する必要がある。

  • Guest Additionsのインストールはセーフモードで起動した状態で実施する。起動時にF8を押すことでセーフモードからの起動を選択できる。セーフモードではない状態でインストールすると、必要な変更をシステムが差し戻してしまうため、3Dの機能が有効にならない。
  • Guest Additionsのインストール時に3D機能を有効にするためのチェックを入れる。デフォルトではチェックがはずれていて使われないようになっているので、明示的に指定する必要がある。

Ubuntu 10.10などにGuest Additionsをインストールした場合、ビデオドライバがうまくインストールされないことがある。Guest Additionsをインストールした後に一旦システムを再起動。lsmodを実行してカーネルモジュールにvboxvideoが入っていないのであれば、ビデオドライバのインストールに失敗している。この場合、次のように直接ビデオドライバをインストールすることで利用できるようになることがある。

cd /opt/VBoxGuestAdditions-3.2.10/src/vboxguest-3.2.10/vboxvideo/
sudo make
sudo make install

ゲストにUbuntuなどを使う場合、3Dアクセラレーションが有効になっているかどうかはglxinfo(1)コマンドの出力で確認できる。たとえば、3Dアクセラレーションが無効の状態では次のような出力を確認できる。

OpenGL Warning: Failed to connect to host. Make sure 3D acceleration is enabled for this VM.
OpenGL vendor string: Mesa Project
OpenGL renderer string: Software Rasterizer
OpenGL version string: 2.1 Mesa 7.9-devel
OpenGL shading language version string: 1.20
OpenGL extensions:

3Dアクセラレーションが有効になると、glxinfo(1)コマンドの出力が次のようにかわる。

OpenGL vendor string: Humper
OpenGL renderer string: Chromium
OpenGL version string: 2.1 Chromium 1.9
OpenGL shading language version string: 1.20 NVIDIA via Cg compiler
OpenGL extensions:

3Dアクセラレーションが有効である場合と無効である場合の性能の差はglxgears(1)コマンドで確認できる。ここで示したケースでは5倍ほどの性能差が確認されている。3Dアクセラレーションが有効になった状態のUbuntuゲストではCompizなどを有効にできるようになる。

3Dアクセラレーションが無効状態のUbuntu 10.10ゲスト。glxgearsの値は470FPS前後

3Dアクセラレーションを有効にすると2250FPS前後までレンダリング性能が向上する

Windows XP 32ビット版ゲストで確認する場合、Google Earthを使う方法が簡単。3Dアクセラレーションが有効になっていればDirect3Dを使ったレンダリングが実施され、無効になっていればOpenGLのソフトウェアエミュレーションモードで動作する。

3Dアクセラレーションが無効になっているため、OpenGLを使ったソフトウェアエミュレーションモードで動作する

3Dアクセラレーションが有効になっているとDirect3Dが利用され、レンダリング精度も細かくさらにサクサクと動作する

3Dアクセラレーションが無効になった状態ではDirect3Dを利用する設定だとGoogle Earthは起動してこない

ホストOSに求められるのは、3Dレンダリングに対応したグラフィックチップを使っていることと、そのレンダリングができるデバイスドライバを利用していること。この例ではホストOSにFreeBSD 9とNVIDIAドライバ、VirtualBox 3.2.10を使っている。64ビット版Windowsへの対応や、Windows Aero効果への対応は今後のVirtualBoxでの開発対象となる。