サイログ。

~雑多な記事置き場~

Ruby+Ruby/SDL+ruby-opengl

Miyakoで色々やっているのと同時に、OpenGLプログラミングをたしなんでいます。

ruby-openglは、Rubyでgl,glx,glutを扱うためのライブラリです。
↓のサイトがメインサイトです。
ruby-openglのサイト

OpenGL2.0が使えるマシンでしたら、GLSL(シェーダ言語)まで使えてしまいます。恐ろしい子!(笑)

OpenGLの関数と同じように掛けます。もちろん、Ruby/SDLとの親和性はばっちりです(ruby-openglの機能は、Ruby/SDLで使われていたOpenGLライブラリ(別の方の作)をベースとしています

Gl.glVertex3f(1.0, 1.0, 2.0)

さて、今やっているのはテクスチャマッピング
これを使えばこういう効果が出るといった、新鮮な驚きが絶えません。

さて、今気になっているのは、画像の一部分をテクスチャにする方法。

OpenGLでは、テクスチャの位置を割り当てるglTexCoordほにゃららという関数がありますが、これは指定する値が「テクスチャ座標」という特殊な物で、0..1間の小数・整数しか渡せません。

これを使う上でいやなのは、一部分を描画するときにピクセル単位できっちり抜き出してくれるかと言うことです。
ちょっとした誤差で、1ピクセルずれて切り出され、画面が不自然に見えるのはできるだけ避けたいと思っています。

本音を言うと、こんな感じのコードが欲しいのですが…。

Gl.glBegin(Gl::GL_QUADS)
Gl.glTexCoord2i(100,100)
Gl.glVertex3f(...)
Gl.glTexCoord2i(100,132)
Gl.glVertex3f(...)
Gl.glTexCoord2i(132,132)
Gl.glVertex3f(...)
Gl.glTexCoord2i(132,100)
Gl.glVertex3f(...)
Gl.glEnd

アドバイスお願いします…。