山崎です。

From: Yasushi Shoji <yashi / yashi.com>
Subject: [ruby-ext:00758] Gdk::Pixmap -> Gdk::GL::Pixmap
 
> gtkglareに GdkGLPixmap *gdk_gl_pixmap_new()と言うのがあります。この
> methodは GdkPixmapを GdkGLPixmapに変換する為の物なんですが、
> pixmap = Gdk::Pixmap.new
> pixmap.to_gl
> の様にする方法がわかりません。

Gdk::GL::pixmap_new を実装するのではないのですか? to_gl を実装して
代わりに使うと言うことでしょうか? gdk_gl_pixmap_new(visual, pixmap)
となってますけど、visual はどう指定したりするのですか?

> 同じ様な事をしている string classとかだとC levelの変換 functionを知って
> いるのでできているのですが、gtkglareaは別々に requireするので Ruby/Gtkの
> 方に変換 funcitonを入れる事ができません。

> 自分で考えられる方法としては、「Ruby/Gtkに Gdk::Pixmap#to_glを define し
> て置いて、それが呼ばれたら gtkglareaを rb_f_require、libraryを見つけられ
> たら externしておいた 実際の functionを呼ぶ。」くらいしか思い浮びません。

もし、Gdk::Pixmap#to_gl を入れたいとしても、(別々に require したとして、)
ruby/gtkglarea の中で、
    rb_define_method(gdkPixmap, "to_gl", to_gl, ..)
のようにすればよいのでは。( extern VALUE gdkPixmap; も多分必要 ) 
私の環境(linux,ruby-1.4.2)ではこの方法は実際に使えています。
[ruby-dev:2024] も参照して下さい。

----------
山崎 裕之