東京工業大学大学院理工学研究科基礎物理学専攻中村研究室メンバーTakayuki Sako

ANAROOT


動作環境 : Ubuntu9.10

ウィンドウが正しく表示されない。

Ubuntu9.10@Windows Vista (using VMware)で動くGLUTを使ったプログラムが 直にインストールしたUbuntu9.10上で正しく動かない。 最初はそもそもウィンドウすら立ち上がっていないと思ったが、どうやら一応立ち上がっているらしく 本来ウィンドウがあるべき場所をマウスでクリックするとウィンドウの外枠がない状態で一応動いている。 が、かなり不自然な挙動。
また、プログラムを実行した端末上には
$ ./main
freeglut (./main): Unable to create direct context rendering for window './main'
This may hurt performance.
と表示されている。
試しにglxinfoしてみると
$ glxinfo
name of display: :0.0
display: :0 screen: 0
direct rendering: No (LIBGL_ALWAYS_INDIRECT set)
server glx vendor string: ATI
server glx version string: 1.4
server glx extensions:
   GLX_ARB_multisample, GLX_EXT_import_context, GLX_EXT_texture_from_pixmap,
   GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
   GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGIS_multisample,
   GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group
client glx vendor string: ATI
client glx version string: 1.4
client glx extensions:
   GLX_ARB_create_context, GLX_ARB_create_context_profile,
   GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
   GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
   GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_NV_swap_group,
   GLX_OML_swap_method, GLX_SGI_make_current_read, GLX_SGI_swap_control,
   GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
   GLX_SGIX_pbuffer, GLX_SGIX_swap_barrier, GLX_SGIX_swap_group,
   GLX_SGIX_visual_select_group, GLX_EXT_texture_from_pixmap,
   GLX_EXT_framebuffer_sRGB, GLX_ARB_fbconfig_float, GLX_AMD_gpu_association
GLX version: 1.4
GLX extensions:
   GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
   GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_OML_swap_method,
   GLX_SGI_make_current_read, GLX_SGI_swap_control, GLX_SGIS_multisample,
   GLX_SGIX_fbconfig, GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group,
   GLX_EXT_texture_from_pixmap
OpenGL vendor string: ATI Technologies Inc.
OpenGL renderer string: ATI Radeon HD 4300/4500 Series   
OpenGL version string: 1.4 (3.3.10243 Compatibility Profile Context)
OpenGL extensions:
   GL_ARB_depth_texture, GL_ARB_draw_buffers, GL_ARB_fragment_program,
(以下省略)
どうやらdirect renderingされてないらしい。 結局たどり着いた結論はこれだった。
かぜきょうの部屋の隅のあたり。
実際に「システム」→「設定」→「外観の設定」→「視覚効果」タブ→"効果なし"にしてみる。
すると正しく表示された。
グラフィックボードのドライバは普通にATIのWebサイトからダウンロードしたものを使っている。

-lXi で詰まる。

OpenGLのmakeオプション-lXiで詰まる。
インストール。
sudo apt-get install libXi-dev
libXi.soが無いようなのでリンクを張る。
sudo ln -s /usr/lib/libXi.so.6 /usr/lib/libXi.so

gluiのインストール

sudo apt-get install libglui-dev

gluiのTips

縦に分割するにはcolumnを使う。
この時、0だと仕切り線が表示されない。
glui->add_column(0);
1だと仕切り線が表示される。
glui->add_column(1);

Windowsにおけるzlibのビルド

libpngを使うためにzlibをビルドする。 例えば、Visual Studio 2008 コマンドプロンプトで
\zlib>nmake -f win32\Makefile.msc
とすれば良いはず。だが、zlib 1.2.5のMakefileにはバグがあるようだ。 そのままコンパイルしたファイルを使うと
未解決の外部シンボル inflate_fast
というエラーが出る。これはinffast.cがコンパイルされてないため。 Makefile.mscの33行目 OBJS にinffast.objを加えておけば良い。
OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \ gzwrite.obj infback.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj
OBJS = adler32.obj compress.obj crc32.obj deflate.obj gzclose.obj gzlib.obj gzread.obj \ gzwrite.obj infback.obj inffast.obj inflate.obj inftrees.obj trees.obj uncompr.obj zutil.obj