2013-02-16 41 views
3

我有一个基于被通过,我需要通过上下文的损失保留的帧缓冲区程序上创建Android应用程序在我LibGDX纹理,它似乎是唯一有效的方法,这样做是简单地保存无论是作为完整的图像还是原始数据,数据都会输出,并在到达时加载它。尽管我努力寻找任何方法来实现这一点,因为我采取的每条路线都会导致以这种或那种方式完全失败。LibGDX保存纹理,以避免背景丢失

我已搜索周围不少,但没有我遇到已经制定了。我主要只是寻找正确方向的暗示,而不是我迄今为止一直在做的漫无目的的搜索和尝试。我认为最好的办法是将纹理中的所有数据转换为某种“缓冲区”,在内部保存数据,然后重新加载并重新创建纹理,但我不确定最佳方式去做这件事。

回答

2

PixmapIO类应该帮助写一个运行时产生的点阵图出来。尽管如此,它并不完全符合FBO纹理的要求。 (它很容易从PixmapTexture,但不是那么容易走另一条路。)如果原语用来生成您的FBO的数据可在Pixmap(例如,基本几何图元),这可能是一个替代。我相信这是最接近支持保存运行时纹理的机制的libGDX,但我并不积极。

有一些libGDX代码用于从帧缓冲区中擦除字节(FBO的纹理数据全部存在于GPU上,因此您需要跳过一些环节才能将其复制到正常的内存中)。请参阅ScreenUtilsthe links here about screenshots and PNGs

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

或者,你可以跟踪被做了FBO“操作”列表中,所以你可以重放它们(后来重建的内容)。这取决于发生了什么事情到您的质感,虽然有很多...

+0

我终于在这方面努力多一些的机会,并与一些修改,我设法得到它部分地使用上面关于节约了链接的工作方法PNG格式。我现在遇到了一个奇怪的问题,虽然在PC上进行测试时,图像是完美创建的,但在Android设备上,由于某些原因,只保存了纯黑色的图像。这对我来说没什么意义,但希望有一个简单的解决方案。我会尽快回复! – Synthetik 2013-02-18 18:09:57

+0

你是否设法获得完整的图像,而不是黑色的图像? – Lunatikul 2013-03-30 12:50:07

+0

@Synthetik我也有一个黑色的图像。在检查日志时,它表示''com.badlogic.gdx.utils.GdxRuntimeException:Pixmap已经处理完了''。你不能创建多个Pixmap副本,就像那样。这是Pixmap的一些“不兼容”。对不起,我是一个新手。看到更详细的解释[这里](http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=20602#p85608)。 – WeirdElfB0y 2015-10-14 07:10:16