3

我在基于 LibGDX 的 Android 应用程序中有一个纹理,它是通过 FrameBuffers 程序创建的,我需要通过上下文丢失来保留它,似乎唯一有效的方法就是简单地保存数据,无论是作为完整图像还是原始图像数据,输出,并在时间到来时将其重新加载。不过,我正在努力寻找任何方法来实现这一目标,因为我所采取的每条路线都以某种方式导致了彻底的失败。

我已经搜索了很多,但我遇到的任何事情都没有解决。我主要只是在寻找正确方向的提示,而不是迄今为止我一直在做的漫无目的的搜索和尝试。我认为最好的办法是将纹理中的所有数据转换为某种“缓冲区”,在内部保存数据,然后重新加载并重新创建纹理,但我不确定最好的方法是什么去做就是了。

4

1 回答 1

2

该类PixmapIO应该有助于编写运行时生成的像素图。不过,它并不是您正在寻找的 FBO 纹理。(从PixmapTexture很容易,但从另一个方向开始就不那么容易了。)如果您用于在 FBO 中生成数据的图元可用Pixmap(例如,基本几何图元),那可能是一种替代方法。我相信这是最接近 libGDX 的用于保存运行时纹理的受支持机制,但我并不肯定。

周围有一些 libGDX 代码用于从帧缓冲区中抓取字节(FBO 的纹理数据都存在于您的 GPU 上,因此您需要跳过一些环节将其复制到普通内存中)。请参阅此处有关屏幕截图ScreenUtilsPNG 的链接

应该很容易适应使用从方法返回的方法PixmapIO来写出“CIM”格式的文件。byte[]ScreenUtils

或者,您可以跟踪对 FBO 执行的“操作”列表,这样您就可以重播它们(稍后重建内容)。这在很大程度上取决于你的纹理是什么,虽然......

于 2013-02-16T05:36:57.477 回答