#java #libgdx
#java #libgdx
Вопрос:
У меня есть текстура, которая поступает прямо из фреймбуфера с помощью метода getColorBufferTexture(). Текстура в порядке, хотя и перевернута по вертикали, как и ожидалось, я могу нарисовать ее в пакете без проблем.
Я пытаюсь добавить его в PixmapPacker, потому что хочу сохранить его для дальнейшего использования, но я получаю исключение «Эта реализация TextureData не возвращает растровое изображение», которое я не знаю, как преодолеть.
Это код, участвующий в сбое:
if (!frameBuffer.getColorBufferTexture().getTextureData().isPrepared())
frameBuffer.getColorBufferTexture().getTextureData().prepare();
packer.pack("panel_cells", frameBuffer.getColorBufferTexture().getTextureData().consumePixmap());
Как вы видите, я сначала попытался вызвать prepare() , но оказалось, что текстура всегда подготавливается на этом этапе (отсюда и «если» сначала), так что это не проблема. В любом случае я оставил эти две строки кода там на всякий случай…
Заранее спасибо!
Ответ №1:
Кажется, я наконец решил эту проблему, переопределив следующий метод при создании фреймбуфера:
FrameBuffer frameBuffer = new FrameBuffer(Pixmap.Format.RGBA8888, bufferSize, bufferSize, false) {
@Override
protected Texture createColorTexture() {
PixmapTextureData data = new PixmapTextureData(new Pixmap(width, height, format), format, false, false);
Texture result = new Texture(data);
result.setFilter(Texture.TextureFilter.Linear, Texture.TextureFilter.Linear);
result.setWrap(Texture.TextureWrap.ClampToEdge, Texture.TextureWrap.ClampToEdge);
return resu<
}
};
Теперь у меня проблемы с упаковщиком, но это другая история… по крайней мере, я могу получить текстуру.
Комментарии:
1. Нет, на самом деле это не работает. Я избавился от исключения, но метод consumePixmap(), похоже, работает не так, как ожидалось: хотя текстура, возвращаемая frameBuffer.getColorBufferTexture, работает нормально, если вы создадите новую текстуру (frameBuffer.getColorBufferTexture().getTextureData().consumePixmap()), вы, по-видимому, получитепустая текстура, которая вообще не имеет смысла и, в любом случае, бесполезна.