2017-04-03 63 views
0

我試圖在屏幕上繪製使用this subimage methodImage實例的子圖像。這似乎是非常簡單的做,但當我打電話的功能,它返回NilClass,而不是一個新的Image如何用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被賦值爲空,因此不能.draw它。我在這裏做錯了什麼?或者,還有另一種繪製子圖像的方法嗎?提前致謝。

回答

1

如果您的圖像爲1024 x 1024或更小,則只能使用.subimage()。我不確定是否有解決方法,但因爲此限制受內存限制的啓發,您最好將圖像分割成512 x 512或1024 x 1024大小的多個圖像。

從古藪的文檔:

注意事項:

  • 子圖像僅在圖像住在一個單獨的貼圖工作。如果圖像太大而不得不分成幾個OpenGL紋理,則子圖像將返回零(與#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

好消息,圖片#子圖像的作品,無論圖像大小的古藪0.12.0及更高版本。