2013/05/08(水) [n年前の日記]
#1 [prog] ruby-opengl を Windows7上で使おうとしてハマる
環境は、Windows7 x64 + Ruby 1.9.3 p392 mingw32版。
ruby-opengl-0.60.1-x86-mingw32-ruby19.gem は、 _ruby-opengl gem for Windows の一番下のほうで、Trebor777さんが公開してくれている。 _opengl + ruby on Windows - 田舎でプログラミング で紹介されてました。助かりました。
ちなみに、Ruby/SDL の opengl.so をリネームするだけでも、gem install ruby-opengl するだけでスクリプトが動いてるように見える…。けど、不安なので mingw32 版の ruby-opengl を入れておこうかなと。
◎ 症状。 :
本来、以下だけで使えるはずだけど。
ruby-opengl と一緒に、opengl というモジュール?ライブラリ?も入るのだけど。
ruby-opengl を使ったスクリプトを実行すると、その opengl.rb が大量の warning を出す。
opengl だけアンインストールすると…。
試しに、ruby-opengl は入れず、opengl だけインストールすると…。
gem install ruby-opengl実際にやってみると問題が。
ruby-opengl と一緒に、opengl というモジュール?ライブラリ?も入るのだけど。
opengl (0.8.0 x86-mingw32) ruby-opengl (0.61.0)
ruby-opengl を使ったスクリプトを実行すると、その opengl.rb が大量の warning を出す。
C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant TRUE C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant FALSE C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM C:/ruby/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM_ALPHA_BITS (以下略)
opengl だけアンインストールすると…。
gem uninstall opengl
C:/ruby/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- glut (LoadError) from C:/ruby193mingw/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:45:in `require' from rubyopengltest1.rb:11:in `<main>'
試しに、ruby-opengl は入れず、opengl だけインストールすると…。
gem install opengl
C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant TRUE C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant FALSE C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM C:/ruby193mingw/lib/ruby/gems/1.9.1/gems/opengl-0.8.0-x86-mingw32/lib/opengl.rb:44: warning: already initialized constant ACCUM_ALPHA_BITS 以下略どうやら opengl をインストールするだけでも、ruby から opengl が使えるようにも見える。ただ、この大量の warning は困る。
◎ 原因。 :
Ruby/SDLが絡んでた。rubysdl-2.1.1.1-mswin32-1.9.1-p243.zip を解凍してインストールする際、以下のファイルがコピーされるのだけど。ソレが、ruby-opengl 側の何かと競合するっぽい。
また、ruby-opengl のサイトから辿って入手できる ruby-opengl-0.60.1-x86-mswin32-ruby19.gem (「mswin32」がついてる点に注意)をインストールすると、色々不具合が起きるという話も見かけた。
原因が分かるまで、5時間ぐらいアレコレやりました…。トホホ。
C:\ruby\lib\ruby\site_ruby\1.9.1\i386-msvcrt\opengl.so
また、ruby-opengl のサイトから辿って入手できる ruby-opengl-0.60.1-x86-mswin32-ruby19.gem (「mswin32」がついてる点に注意)をインストールすると、色々不具合が起きるという話も見かけた。
原因が分かるまで、5時間ぐらいアレコレやりました…。トホホ。
◎ 解決方法。 :
- opengl、ruby-opengl をアンインストールしておく。(gem uninstall xxxx)
- Ruby/SDL がインストールした C:\ruby\lib\ruby\site_ruby\1.9.1\i386-msvcrt\opengl.so を、リネームして使えないようにしておく。(opengl.so.sdl_ver とか。) これはこれで、もしかすると、Ruby/SDL使用時に問題が出るかもしれないけれど…。
- ruby-opengl-0.60.1-x86-mingw32-ruby19.gem を入手してインストール。「mswin32」じゃなくて、「mingw32」なことに注意。
ruby-opengl-0.60.1-x86-mingw32-ruby19.gem は、 _ruby-opengl gem for Windows の一番下のほうで、Trebor777さんが公開してくれている。 _opengl + ruby on Windows - 田舎でプログラミング で紹介されてました。助かりました。
ちなみに、Ruby/SDL の opengl.so をリネームするだけでも、gem install ruby-opengl するだけでスクリプトが動いてるように見える…。けど、不安なので mingw32 版の ruby-opengl を入れておこうかなと。
◎ 動作確認。 :
_RubyでOpenGLをやってみる - フリップフラップ
で書かれてるスクリプトを使って動作確認してみたり。teapot、たしかに表示されました。
[ ツッコむ ]
以上です。