【问题标题】:Libgdx Pixmap and getFrameBufferPixelsLibgdx Pixmap 和 getFrameBufferPixels
【发布时间】:2013-05-21 04:18:40
【问题描述】:

我想知道如何在 Pixmap

中获取 FrameBufferPixel

我知道我必须使用 getFrameBufferPixels(true)

但是不知道要放什么参数

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

你能给我举个例子吗?

谢谢你

【问题讨论】:

  • Pixmap 表示常规内存中的纹理,FrameBuffer 将渲染目标表示为纹理。 Pixmap 没有“FrameBufferPixel”。你能更概括地描述一下你想要做什么吗?
  • 我想在 Pixmap 中获得游戏截图
  • 我想将我的游戏截图放在像素图中,以便给它一个仅适用于像素图的模糊脚本。

标签: byte libgdx offset pixmap


【解决方案1】:
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 保持空白...请给我一个完整的代码。
  • 我也试过这个code.google.com/p/libgdx-users/wiki/Screenshots 将屏幕截图放入像素图中,但它不起作用,它显示一个 0.5 alpha 的蓝屏......但是当我保存图片时,它可以工作。 .但我不想保存图片..我只想要像素图。
  • 我做了一个小项目。它绘制一次图像,然后截取屏幕截图。然后将该屏幕截图转换回纹理并绘制 3 次以证明它不是空的。 dl.dropboxusercontent.com/u/3504939/ScreenshotTest.rar
  • 谢谢你,你是对的,我做错了,你的代码完美无缺!
  • 我猜 ScreenUtils.getFrameBufferPixels 只依赖于屏幕上的 FrameBuffer。您如何对自己创建的 FrameBuffer 对象执行相同的操作?
猜你喜欢
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 2016-03-13
  • 2017-09-01
  • 2013-12-24
  • 2020-09-05
  • 2019-02-13
  • 1970-01-01
相关资源
最近更新 更多