Sun VirtualBoxのゲストGNU/LinuxにおけるOpenGLの3Dアクセラレーションを試す(2009/4/13現在)
バージョン2.2系からGNU/Linux*1をゲストOSに使用した場合にGuest AdditionsをインストールするとOpenGLの3Dアクセラレーションが利用できるということで、x86_64版のUbuntu 8.10を新規にインストールして試してみた。
Guest Additionsのインストールについても、今ではメニューの「Guest Additions のインストール...」を選択後少し待ち(オートランにより自動的にインストーラが起動するので)ユーザのパスワードを入力し、処理が済むまで待ってから再起動するだけの簡単操作でインストールできている。
ゲストOSの要件
マニュアルによると、ゲストOSは
設定など
仮想マシンの設定で「3Dアクセラレーションを有効化」を有効にした上で要件を満たすゲストOSにGuest Additionsが入っていれば、特にゲストOS上で設定を行うことなくOpenGLの3Dアクセラレーションは利用可能となる。
展開プラグインなどはすぐに使用できる。
glxinfoで情報を見るとハードウェアアクセラレーションが利用可能であることが分かる。
以下は出力をコピペしたもの。
guest$ glxinfo name of display: :0.0 display: :0 screen: 0 direct rendering: Yes server glx vendor string: Chromium server glx version string: 1.2 Chromium server glx extensions: GLX_ARB_multisample, GLX_EXT_texture_from_pixmap, GLX_SGIX_fbconfig client glx vendor string: Chromium client glx version string: 1.2 Chromium client glx extensions: GLX_ARB_multisample, GLX_EXT_texture_from_pixmap, GLX_SGIX_fbconfig GLX version: 1.3 GLX extensions: GLX_ARB_multisample, GLX_EXT_texture_from_pixmap, GLX_SGIX_fbconfig OpenGL vendor string: Humper OpenGL renderer string: Chromium OpenGL version string: 1.5 Chromium 1.9 OpenGL extensions: GL_ARB_depth_texture, GL_ARB_fragment_program, GL_ARB_multisample, GL_ARB_multitexture, GL_ARB_occlusion_query, GL_ARB_point_parameters, GL_ARB_point_sprite, GL_ARB_shadow, GL_ARB_texture_border_clamp, GL_ARB_texture_compression, GL_ARB_texture_cube_map, GL_ARB_texture_env_add, GL_ARB_texture_env_combine, GL_EXT_texture_env_combine, GL_ARB_texture_env_dot3, GL_EXT_texture_env_dot3, GL_ARB_texture_mirrored_repeat, GL_ARB_texture_non_power_of_two, GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object, GL_ARB_vertex_program, GL_ARB_window_pos, GL_EXT_blend_color, GL_EXT_blend_minmax, GL_EXT_blend_func_separate, GL_EXT_blend_subtract, GL_EXT_texture_env_add, GL_EXT_fog_coord, GL_EXT_multi_draw_arrays, GL_EXT_secondary_color, GL_EXT_shadow_funcs, GL_EXT_stencil_wrap, GL_EXT_texture_cube_map, GL_EXT_texture_edge_clamp, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_lod_bias, GL_EXT_texture_object, GL_EXT_texture3D, GL_IBM_rasterpos_clip, GL_NV_fog_distance, GL_NV_fragment_program, GL_NV_register_combiners, GL_NV_register_combiners2, GL_NV_texgen_reflection, GL_NV_texture_rectangle, GL_NV_vertex_program, GL_NV_vertex_program1_1, GL_NV_vertex_program2, GL_SGIS_generate_mipmap, GL_CR_state_parameter, GL_CR_cursor_position, GL_CR_bounding_box, GL_CR_print_string, GL_CR_tilesort_info, GL_CR_synchronization, GL_CR_head_spu_name, GL_CR_performance_info, GL_CR_window_size, GL_CR_tile_info, GL_CR_saveframe, GL_CR_readback_barrier_size, GL_CR_server_id_sharing, GL_CR_server_matrix 2 GLX Visuals visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat ---------------------------------------------------------------------- 0x21 24 tc 0 32 0 r y y 8 8 8 8 0 16 8 16 16 16 16 0 0 None 0x3e 32 tc 0 32 0 r y y 8 8 8 8 0 16 8 16 16 16 16 0 0 None 2 GLXFBConfigs: visual x bf lv rg d st colorbuffer ax dp st accumbuffer ms cav id dep cl sp sz l ci b ro r g b a bf th cl r g b a ns b eat ---------------------------------------------------------------------- 0x21 0 tc 0 24 0 r y . 8 8 8 0 0 16 8 0 0 0 0 1 1 None 0x3e 0 tc 0 32 0 r y . 8 8 8 8 0 16 8 0 0 0 0 1 1 None
マウスポインタが行方不明?
手元のMandriva Linux 2009.0上で試したところ、何故かマウスの統合機能は動作せず、また同時に、ゲストOS上のマウスポインタがログイン後に消えてしまった(仮想マシンのアクセラレーション機能を無効にするとポインタが消えることはなかった)。
しかし、その後もう一度Guest Additionsを入れ直したところ、正常に動作するようになった。
うまくいかない場合は入れ直すのが良いかもしれない。
邪道(?)なマウスポインタ表示方法
以下はGuest Additionsの入れ直しをする前に書いたもの。必要はなくなったがせっかくなので残しておく。
もしマウスポインタが出なくても、Synapticやapt-getコマンドでCCSM(パッケージ名「compizconfig-settings-manager」)をインストールし、「マウス表示」プラグインを有効にして幾つかの設定を行うことにより、無理やりマウスポインタの位置を表示させることはできるようだ。
以下、設定メモ。
- 「一般」タブ
- 回転速度: 0.5000(既定値)
- 半径: 10(最小値)
- 放出体: 3(3以上を推奨)
- 「粒子のオプション」タブ
- 粒子の数: 100(100-200ぐらいを推奨)
- 粒子の大きさ: 2.0000(2-3ぐらいを推奨)
- 粒子の減速: 1.0000(既定値)
- 粒子の寿命: 0.1000(最小値)
- 背景の暗さ: 0.9000(既定値)
- 加色合成: チェック
- 粒子の色: 既定値(ランダム色に設定しない場合のみ好みで設定)
- ランダム色の粒子: チェック(好みで設定)