ruby-openglで英数字の文字列を描画

ちょっとハマったのでメモ。結論から言うと、文字列オブジェクトをeach_byteで分解して、GLUT.BitmapCharacterを用いる。hogeと描画したかったら、

'hoge'.each_byte{ |x|
GLUT.BitmapCharacter(GLUT::BITMAP_HELVETICA_18, x)}

となる。なお、文字列の場所はGL.RasterPos2dなどで指定する。全体ソースコードで例。

#!/usr/bin/ruby
require 'opengl'
display = proc {GL.Clear(GL::COLOR_BUFFER_BIT)
GL.RasterPos2d(0.0,0.0)
'hoge'.each_byte{|x|
GLUT.BitmapCharacter(GLUT::BITMAP_HELVETICA_18,x)
}
GL.Flush()
}
resize = proc {|w,h|
GL.Viewport( 0, 0, w, h)
GL.LoadIdentity()
}
keyboard = proc {|key, x, y|
case key
when 'q','Q','\033'
exit 0
end
}
GLUT.Init()
GLUT.InitDisplayMode(GLUT::RGBA)
GLUT.CreateWindow($0)
GLUT.DisplayFunc(display)
GLUT.ReshapeFunc(resize)
GLUT.KeyboardFunc(keyboard)
GL.ClearColor(0.0, 1.0, 1.0, 0.0)
GLUT.MainLoop()

この方法だと日本語は無理。

参考:
ruby-opengl/examples/misc/font-glut.rb at master · lazyatom/ruby-opengl · GitHub https://github.com/lazyatom/ruby-opengl/blob/master/examples/misc/font-glut.rb

本サイトはUXを悪くするevilなGoogle広告を消しました。応援してくださる方は おすすめガジェット を見ていってください!
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次