如何使用Ruby Gosu库绘制子图像?
我试图在屏幕上绘制如何使用Ruby Gosu库绘制子图像?,ruby,libgosu,Ruby,Libgosu,我试图在屏幕上绘制图像实例的子图像。这样做似乎很简单,但当我调用函数时,它返回一个NilClass,而不是一个新的图像 主图像定义为: @bg_img = Gosu::Image.new("res/space1.jpg") # dimensions 1080 x 1920 当我运行@bg_img.draw(0,0,0)时,它会正常绘制图像,但当我尝试将其转换为新图像时: test = @bg_img.subimage(0,0, 100, 100) # from (0,0), get recta
图像
实例的子图像。这样做似乎很简单,但当我调用函数时,它返回一个NilClass
,而不是一个新的图像
主图像定义为:
@bg_img = Gosu::Image.new("res/space1.jpg") # dimensions 1080 x 1920
当我运行@bg_img.draw(0,0,0)
时,它会正常绘制图像,但当我尝试将其转换为新图像时:
test = @bg_img.subimage(0,0, 100, 100) # from (0,0), get rectangle of 100x100 dimension
变量test
赋值为空,因此无法。绘制它。我做错什么了吗?或者,还有其他方法来绘制子图像吗?提前感谢。如果图像为1024 x 1024或更小,则只能使用.subimage()
。我不确定是否有解决办法,但因为这个限制是受内存限制的启发,所以您最好将图像拆分为多个大小为512 x 512或1024 x 1024的图像
从gosu文档:
注意事项:
- 仅当图像位于单个纹理上时,子图像才起作用。如果图像太大,必须分割成几个OpenGL纹理,子图像将返回nil(与#gl#u 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;
好消息是,在Gosu 0.12.0及更高版本中,无论图像大小如何,图像#子图像都可以工作