gensym

プログラミングと読書、勉強に関するメモ

Ruby から OpenGL を使う

環境 : ruby 2.3.0 OSX 10.9.5

opengl は汎用的な CG 作成ソフトウェアで、ruby からも利用できる。
gem を探すと openglruby-opengl の二種類あるが、ruby-opengl の方は数年前から更新が止まっていて、使い方も少し違うので opengl の方を使う。
公式サイト https://rubygems.org/gems/opengl
いつも通り

sudo gem install opengl glu glut

後ろの2つもインストールする必要がある。
最初はなかなかインストールがうまくいかなかったが、gem update をしたら通った。
依存に原因があったのだろうか。
hello world 代わりにポットを描いてみよう。
参考: MF / Ruby で OpenGL

require 'opengl'
require 'glut'

display = proc{
  GL.Clear(GL::COLOR_BUFFER_BIT)
  GL.Color3f(1, 1, 1)
  GLUT.WireTeapot(0.5)
  GL.Flush()
}

GLUT.Init()
GLUT.InitWindowSize(480,480)
GLUT.CreateWindow("OpenGL Example")
GLUT.DisplayFunc(display)
GL.ClearColor(0,0,0,1)
GLUT.MainLoop()

f:id:gensym:20160917121519p:plain


gem に examples が付いているので、いくつかやってみる。
examples/misc/plane.rb

f:id:gensym:20160916194338p:plain
examples/misc/anisotropic.rb

f:id:gensym:20160916194347p:plain


examples/OrangeBook/brick.rb

f:id:gensym:20160916194357p:plain


opengl 自体がなかなか複雑なので、ruby を通しても面倒な記述が必要なようだ。