2017-04-03 4 views
0

this subimage methodを使用してImageインスタンスのサブ画像を画面に描画しようとしています。それは非常にまっすぐ進むと思われるが、関数を呼び出すと、Imageの代わりにNilClassが返されます。Ruby Gosuライブラリでサブ画像を描くには?

メイン画像は次のように定義されています

@bg_img = Gosu::Image.new("res/space1.jpg") # dimensions 1080 x 1920 

私は@bg_img.draw(0,0,0)を実行すると、それが正常に画像を描画するが、IIは、新しいイメージにそれをキャストしようとすると:

test = @bg_img.subimage(0,0, 100, 100) # from (0,0), get rectangle of 100x100 dimension 

変数test NULLが割り当てられているため、.drawできません。私はここで何か間違っていますか?または、サブ画像を描画する別の方法がありますか?前もって感謝します。

答えて

1

.subimage()は、画像が1024 x 1024以下の場合にのみ使用できます。回避策があるかどうかはわかりませんが、この制限はメモリの制約からインスピレーションを得ているため、画像を512 x 512または1024 x 1024のサイズの複数の画像に分割するほうがよいでしょう。

よりgosuドキュメント:

警告:

  • 画像は、単一のテクスチャの上に住んでいる場合はサブイメージにのみ機能します。画像が大きすぎて複数のOpenGLテクスチャに分割しなければならない場合、サブ画像はnilを返します(#gl_tex_infoと同じです)。ソースコードから

//! Returns the maximum size of an texture that will be allocated 
//! internally by Gosu. 
//! Useful when extending Gosu using OpenGL. 
const unsigned MAX_TEXTURE_SIZE = 1024; 
0

グッドニュースは、画像番号のサブイメージはGosuにかかわらず、画像サイズの0.12.0以降で動作します。