Libgdx的Pixmap和getFrameBufferPixels

3
我想知道如何在Pixmap中获取FrameBufferPixel。
我知道我必须使用getFrameBufferPixels(true),但我不知道要放什么参数。
new Pixmap(byte[] encodedData, int offset, int len);

你能给我展示一个应该工作的例子吗?

谢谢你。


一个Pixmap代表常规内存中的纹理,而FrameBuffer代表了作为纹理的渲染目标。对于Pixmap来说,没有“FrameBufferPixel”。您能更一般地描述一下您想要做什么吗? - P.T.
1
我想在一个 Pixmap 中拍摄游戏的屏幕截图。 - LeSam
我想将我的游戏截图放入一个 Pixmap 中,以便为其提供一个仅在 Pixmap 上工作的模糊脚本。 - LeSam
1个回答

8
new Pixmap(byte[] encodedData, int offset, int len);

据我所知,encodedData需要包含来自png、jpg或bmp文件的数据,包括文件头。从getFrameBufferPixels接收到的数据是以RGBA8888格式呈现的。因此,您不能使用此构造函数来进行截屏。相反,我建议您尝试类似以下方式:
byte[] pixelData = ScreenUtils.getFrameBufferPixels(true);
Pixmap pixmap = new Pixmap(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), Format.RGBA8888);
ByteBuffer pixels = pixmap.getPixels();
pixels.clear();
pixels.put(pixelData);
pixels.position(0)

好的,但我希望截屏后能将其存储在Pixmap中以便应用模糊脚本。使用你的代码,创建的Pixmap保持为空白... 你能提供完整的代码给我吗? - LeSam
我也尝试了这个http://code.google.com/p/libgdx-users/wiki/Screenshots来将截图放入Pixmap中,但它不起作用,它显示一个带有0.5 alpha的蓝屏... 但是当我保存图片时,它可以工作... 但我不想保存图片... 我只想要pixmap。 - LeSam
2
我做了一个小项目。它绘制一张图片,然后进行截屏。该截屏随后被转换回纹理,并绘制3次以证明它不是空的。 https://dl.dropboxusercontent.com/u/3504939/ScreenshotTest.rar - Shinni
谢谢你,你是对的,我犯了一个错误,你的代码完美地工作了! - LeSam
我猜ScreenUtils.getFrameBufferPixels仅依赖于屏幕上的FrameBuffer。如果您自己创建了一个FrameBuffer对象,您会如何做到同样的效果? - Fran Marzoa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接