我有一个纹理,通过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;
}
};
现在我有包装的问题,但这是一个不同的故事…至少我可以得到纹理