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

时间:2016-10-10 09:21:49

标签: java 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”),所以这不是问题。无论如何,我已经将这两行代码留在那里以防万一...

提前致谢!

1 个答案:

答案 0 :(得分:1)

在创建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;
        }
    };

现在我遇到了包装工的问题,但这是一个不同的故事......至少我可以得到纹理。