こんにちは、なかむら(う)です。

まったく何も試さないで憶測だけで言いますが(ごめんなさい)、

In message "[ruby-ext:02255] 構造体を含む構造体のライブラリ化"
    on Dec.11,2003 11:45:20, <katata / chugoku-pc.ac.jp> wrote:
| require 'DirectXGraphicsTest'
| 
| test1 = D3D::MATERIAL9.new( )
  d = test1.Diffuse
  d.r = 1.0
| 
| while true
    puts d.r
| end

とすると大丈夫だったりしませんかね。


mD3D_cD3DMATERIAL9_get_Diffuse()で、Data_Wrap_Structを使って
D3D::COLORVALUEのインスタンスを生成してるわけですが、このイン
スタンスがどこにも保存されないため、GCされて消えてしまっている
のだと思います。

あと、同様に、mD3D_cD3DCOLORVALUE_get_r()の中で毎回Floatのイ
ンスタンスを生成しているのもいまいちな気がします。

直し方は... いろいろ思いつきますけど、mD3D_cD3DMATERIAL9_new()
の中で真面目に処理するのがいいんじゃないでしょうか。


それでは。
-- 
U.Nakamura <usa / osb.att.ne.jp>