尝试从纹理(libGDX)获取像素图时出错



我有一个纹理,通过getColorBufferTexture()方法直接从FrameBuffer中出来。纹理很好,虽然像预期的那样垂直翻转,但我可以批量绘制它而没有问题。

我试图将其添加到PixmapPacker,因为我想保存它以作进一步使用,但我得到一个异常"这个TextureData实现不返回一个Pixmap",我不知道如何克服。

这是导致崩溃的代码:

    if (!frameBuffer.getColorBufferTexture().getTextureData().isPrepared())
        frameBuffer.getColorBufferTexture().getTextureData().prepare();
    packer.pack("panel_cells", frameBuffer.getColorBufferTexture().getTextureData().consumePixmap());

正如你所看到的,我已经尝试先调用prepare(),但事实证明,纹理总是准备在这一点上(因此"if"第一),所以这不是问题。无论如何,我在那里留下了这两行代码,以防万一…

提前感谢!

在创建FrameBuffer时,我似乎最终通过覆盖以下方法解决了这个问题:

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 result;
        }
    };

现在我有包装的问题,但这是一个不同的故事…至少我可以得到纹理

最新更新