Как нарисовать образ с помощью библиотеки Ruby Gosu?
Я пытаюсь нарисовать на экране изображение Image
экземпляр, использующий этот метод subimage. Кажется, это довольно просто сделать, но когда я вызываю функцию, она возвращает NilClass
вместо нового Image
,
Основное изображение определяется как:
@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
назначается с нулем и, следовательно, не может .draw
Это. Я что-то здесь не так делаю? Или есть другой способ нарисовать образ? Заранее спасибо.
2 ответа
Вы можете использовать только .subimage()
если ваше изображение 1024 х 1024 или меньше. Я не уверен, что есть обходной путь, но, поскольку этот предел обусловлен ограничениями памяти, вам, вероятно, было бы лучше просто разделить изображение на несколько изображений размером 512 x 512 или 1024 x 1024.
Из Госу документов:
Предостережения:
- Подизображение работает, только если изображение живет на одной текстуре. Если изображение было слишком большим и его нужно было разделить на несколько текстур 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;
Хорошая новость: изображение Image# работает независимо от размера изображения в Gosu 0.12.0 и более поздних версиях.